我有两个 data.table(dt1 和 dt2)。 dt1 是过去的产品数据,dt2 是当前的产品数据。我想创建第三个 data.table,仅当产品特征(级别或颜色)不同或产品本身不同时,它才将新行从 dt2 插入到 dt1 中。
library(data.table)
dt1 <- fread('
Product Level Color ReviewDate
A 0 Blue 9/7/2016
B 1 Red 9/7/2016
C 1 Purple 9/7/2016
D 2 Blue 9/7/2016
E 1 Green 9/7/2016
F 4 Yellow 9/7/2016
')
dt2 <- fread('
Product Level Color ReviewDate
A 1 Black 9/8/2016
B 1 Red 9/8/2016
C 5 White 9/8/2016
D 2 Blue 9/8/2016
E 1 Green 9/8/2016
F 4 Yellow 9/8/2016
G 3 Orange 9/8/2016
')
我的最终 data.table(dt3) 应该有以下更改:A 和 C 在 dt2 中与 dt1 中都不同,这就是为什么 dt2 中的新(不同)行与 dt1 中的所有行一起插入到最终表中。 G是一个全新的产品,不在dt1中,这就是它进入决赛桌的原因。
Product Level Color ReviewDate
A 0 Blue 9/7/2016
A 1 Black 9/8/2016
B 1 Red 9/7/2016
C 1 Purple 9/7/2016
C 5 White 9/8/2016
D 2 Blue 9/7/2016
E 1 Green 9/7/2016
F 4 Yellow 9/7/2016
G 3 Orange 9/8/2016
我努力了:
setkey(dt1, Product)
setkey(dt2, Product)
dt3<- dt1[dt2]
setkey(dt3,Product,ReviewDate)
您可以堆叠和统一:
unique(rbind(dt1, dt2), by=c("Product", "Level", "Color"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)