【发布时间】:2015-11-29 00:37:47
【问题描述】:
我对 data.table 包很陌生,有一个简单的问题。我有两个 data.tables 与键的使用进行比较。在 data.table 1 中,如果 key 列 A 和 B 在 data.table B 中相同,则 C 列的值从“NO”更改为“OK”。这一步是不可避免的,必须完成。
library(data.table)
df_1 <- data.frame(A=c(1,1,3,5,6,7), B = c("x","y","z","q","w","e"), C = rep("NO",6))
df_2 <- data.frame(A=c(3,5,1), B = c("z","q","x"), D=c(3,5,99))
keys <- c("A","B")
dt_1 <- data.table(df_1, key = keys)
dt_2 <- data.table(df_2, key = keys)
dt_1[dt_2, C := "OK"]
现在我得到了 data.table:
A B C
1: 1 x OK
2: 1 y NO
3: 3 z OK
4: 5 q OK
5: 6 w NO
6: 7 e NO
我想包含第二个操作。如果在 data.table 2 中 A 列的值不等于 D 列,则应在第一次操作后使用 D 列的值。意思是 D 列优于 A。无论 D 中有多少不同的值,这都应该有效。所需的 data.table 如下所示:
A B C
1: 99 x OK
2: 1 y NO
3: 3 z OK
4: 5 q OK
5: 6 w NO
6: 7 e NO
我厌倦了一些没有成功的事情。
dt_1[dt_2, A != D, A := D]
感谢您的帮助!
【问题讨论】:
标签: r data.table