首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R: Uniques (或dplyr dplyr distinct) +最近的日期

R: Uniques (或dplyr dplyr distinct) +最近的日期
EN

Stack Overflow用户
提问于 2015-07-21 21:25:35
回答 1查看 4.1K关注 0票数 6

我有一个由包含基于不同日期的名称的重复的信息行组成的数据文件。我想将这个df过滤成一个只包含唯一名称的df,但如果有机会的话,也可以选择最近出现的名称。我是dplyr的忠实拥趸,以前使用过不同和选择的组合,但是文档使得这似乎不能仅用它来完成:

“在确定唯一性时使用的变量。如果给定的输入组合有多行,则只保留第一行。”

这似乎是一个常见的问题,所以我想知道是否有人有任何建议。下面是一个示例df,它反映了我的真实数据的名称是一个字符类,日期是我使用lubridate包生成的POSIXct。

代码语言:javascript
复制
structure(list(Name = c("John", "John", "Mary", "John", "Mary", 
"Chad"), Date = structure(c(1430438400, 1433116800, 1335830400, 
1422748800, 1435708800, 1427846400), tzone = "UTC", class = c("POSIXct", 
"POSIXt"))), .Names = c("Name", "Date"), row.names = c(NA, -6L
), class = "data.frame")

预期的结果是:

代码语言:javascript
复制
structure(list(Name = c("John", "Mary", "Chad"), Date = structure(c(1433116800, 
1435708800, 1427846400), class = c("POSIXct", "POSIXt"), tzone = "UTC")), .Names = c("Name", 
"Date"), row.names = c(2L, 5L, 6L), class = "data.frame")

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-21 21:38:07

最简单的方法是

代码语言:javascript
复制
DF %>% arrange(desc(Date)) %>% distinct(Name)

如果您真的希望将名称保持在相同的顺序中,那么这些名称也可以使用(感谢@akrun):

代码语言:javascript
复制
DF %>% group_by(Name) %>% slice(which.max(Date))  # @akrun's better idea
DF %>% group_by(Name) %>% filter(Date==max(Date)) # my idea
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31549898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档