【发布时间】:2017-03-06 20:57:59
【问题描述】:
我想删除 a b 列具有相同值的行。此外,唯一行应包含重复项的最新日期(c 列)。例如:
> a <- c(rep("A", 3), rep("B", 3), rep("C",2))
> b <- c(1,1,2,4,1,1,2,2)
> c <- c("2016-10-01", "2016-10-02", "2016-10-03", "2016-10-04", "2016-10-04", "2016-10-05", "2016-10-06", "2016-10-07")
> df <-data.frame(a,b,c)
> df
a b c
1 A 1 2016-10-01
2 A 1 2016-10-02
3 A 2 2016-10-03
4 B 4 2016-10-04
5 B 1 2016-10-04
6 B 1 2016-10-05
7 C 2 2016-10-06
8 C 2 2016-10-07
我想得到以下数据框:
a b c
1 A 1 2016-10-02
3 A 2 2016-10-03
4 B 4 2016-10-04
5 B 1 2016-10-05
6 C 2 2016-10-07
这是我目前尝试过的:
> df[!(duplicated(df$a, df$b)|
+ duplicated(df$a, df$b, fromLast=TRUE)),]
a b c
1 A 1 2016-10-01
2 A 1 2016-10-02
3 A 2 2016-10-03
4 B 4 2016-10-04
5 B 1 2016-10-04
6 B 1 2016-10-05
【问题讨论】:
-
这个问题好像跟统计没什么关系,最好还是去 Stack Overflow 问问。也就是说,我认为您正在寻找的是
df[!duplicated(df[c("a", "b")], fromLast = T), ]- 它假设您的数据已经按列c排序,至少在任何给定的a,b组合中。 -
请不要跨帖。这将在 Stack Overflow 上讨论,所以如果您等待,我们将为您迁移它。您也可以删除它。
标签: r