我有以下两个数据框:
df1 = data.frame(names=c('a','b','c','c','d'),year=c(11,12,13,14,15), Times=c(1,1,3,5,6))
df2 = data.frame(names=c('a','e','e','c','c','d'),year=c(12,12,13,15,16,16), Times=c(2,2,4,6,7,7))
我想知道如何合并上述 df 但只保留最近的时间取决于年份。它应该是这样的:
Names Year Times
a 12 2
b 12 2
c 16 7
d 16 7
e 13 4
最佳答案
我猜你不是想合并这些,而是通过堆叠来组合。您的问题是模棱两可的,因为“重复”可能发生在数据帧级别或向量级别。您的示例不会在数据帧级别显示任何重复,但会在矢量级别显示。描述问题的最好方法是你想要最后一个(或最大)Times
每个组内的条目如果 names
值(value)观:
> df1
names year Times
1 a 11 1
2 b 12 1
3 c 13 3
4 c 14 5
5 d 15 6
> df2
names year Times
1 a 12 2
2 e 12 2
3 e 13 4
4 c 15 6
5 c 16 7
6 d 16 7
> dfr <- rbind(df1,df2)
> dfr <-dfr[order(dfr$Times),]
> dfr[!duplicated(dfr, fromLast=TRUE) , ]
names year Times
1 a 11 1
2 b 12 1
6 a 12 2
7 e 12 2
3 c 13 3
8 e 13 4
4 c 14 5
5 d 15 6
9 c 15 6
10 c 16 7
11 d 16 7
> dfr[!duplicated(dfr$names, fromLast=TRUE) , ]
names year Times
2 b 12 1
6 a 12 2
8 e 13 4
10 c 16 7
11 d 16 7
关于r - 如何删除重复项但在R中保留最新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38446108/