我有以下两个数据框:
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))
Run Code Online (Sandbox Code Playgroud)
我想知道如何合并上面的df,但只保留最近的时间取决于年份.它应该如下所示:
Names Year Times
a 12 2
b 12 2
c 16 7
d 16 7
e 13 4
Run Code Online (Sandbox Code Playgroud)
我猜你并不是要合并这些,而是通过堆叠来组合.您的问题不明确,因为"重复"可能发生在数据帧级别或矢量级别.您的示例不会在数据帧级别显示任何重复,但会在矢量级别显示.描述问题的最佳方法是,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |