r - 如何删除重复项但在R中保留最新数据

标签 r dataframe merge

我有以下两个数据框:

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/

相关文章:

r - 在 Julia 中编写 R 包?

git - .gitattributes merge 驱动程序未使用

r - 在 R 中拟合 von Mises 分布的混合

r - Windows 上 RStudio 中的波浪号扩展

r - 转换月mmm为数值

java - 在 Intellij IDEA 中合并两个类的最简单方法是什么?

git - 为什么 git 在 merge 时会删除在一个分支上添加的行?

python - 将 Dataframe 转换为数据透视表,将值分组到列表中

python - 如何将一行从一个 pandas 数据框复制到另一个 pandas 数据框?

python-3.x - Pandas 属性错误 : 'DataFrame' object has no attribute 'dt' when using apply on groupby