我想使用 dt1 中变量的条件合并两个 data.table。请参阅以下示例:
library(data.table)
# Example data tables
dt1 <- data.table(id = 1:5, var1 = c(1, 0, 1, 0, 1), name1 = c("A", "B", "C", "D", "E"))
dt2 <- data.table(name2 = c("A", "B", "C", "D", "E"), other_var = 101:105)
> dt1
id var1 name1
1: 1 1 A
2: 2 0 B
3: 3 1 C
4: 4 0 D
5: 5 1 E
> dt2
name2 other_var
1: A 101
2: B 102
3: C 103
4: D 104
5: E 105
我想做的是合并 dt1 和 dt2,这样只有当 dt1 中 var1 == 1 时才会合并值。期望的结果:
> dt1
id var1 name1 other_var
1: 1 1 A 101
2: 2 0 B NA
3: 3 1 C 103
4: 4 0 D NA
5: 5 1 E 105
我尝试过类似的方法:
dt1[var1 == 1][dt2, other_var := i.other_var, on = .(name1 = name2)]
和
dt1[dt2, on = .(name1 = name2), other_var := i.other_var, var1 == 1]
但这两种方法似乎都不起作用。我做错了什么?
我会将
var1
添加到 dt2
,然后也加入:
dt2[, var1 := 1]
dt1[dt2,
on = .(name1 = name2, var1),
other_var := i.other_var
][]
# id var1 name1 other_var
# <int> <num> <char> <int>
# 1: 1 1 A 101
# 2: 2 0 B NA
# 3: 3 1 C 103
# 4: 4 0 D NA
# 5: 5 1 E 105