首页 > 解决方案 > R - 合并两个数据表并从旧文件中删除重复项?

问题描述

我有两个数据库 - 一个旧的和一个更新的。两者具有相同的结构,具有唯一的 ID。如果记录更改 - 有具有相同 ID 和新数据的新记录。所以在rbind(m1,m2)我复制了记录之后。我不能只删除重复的 ID,因为可以更新数据。没有办法区分哪条记录是新的,除了它是在旧文件中还是在更新文件中。

如何合并两个表,如果存在重复 ID 的行,则保留较新文件中的一个?

我知道我可以在这两者中添加列ifelse(),但我正在寻找更优雅的东西,最好是 oneliner。

标签: rdataframe

解决方案


没有样本数据很难给出正确的答案。但这是一种可以根据数据进行调整的方法。

#sample data
library( data.table )
dt1 <- data.table( id = 2:3, value = c(2,4))
dt2 <- data.table( id = 1:2, value = c(2,6))
#dt1
#    id value
# 1:  2     2
# 2:  3     4
#dt2
#    id value
# 1:  1     2
# 2:  2     6

#rowbind...
DT <- rbindlist( list(dt1,dt2), use.names = TRUE )
#    id value
# 1:  2     2
# 2:  3     4
# 3:  1     2
# 4:  2     6

#deselect duplicated id from the buttom up
# assuming the last file in the list contains the updated values
DT[ !duplicated(id, fromLast = TRUE), ]
#    id value
# 1:  3     4
# 2:  1     2
# 3:  2     6

推荐阅读