【发布时间】:2023-01-20 19:30:00
【问题描述】:
我有一个包含多个组的数据表。我想用包含 vals 中的值的行填充每个组(如果它们不存在的话)。额外的列应该用 NA 填充。
DT = data.table(group = c(1,1,1,2,2,3,3,3,3), val = c(1,2,4,2,3,1,2,3,4), somethingElse = rep(1,9))
vals = data.table(val = c(1,2,3,4))
我想要的是:
group val somethingElse
1: 1 1 1
2: 1 2 1
3: 1 3 NA
4: 1 4 1
5: 2 1 NA
6: 2 2 1
7: 2 3 1
8: 2 4 NA
9: 3 1 1
10: 3 2 1
11: 3 3 1
12: 3 4 1
val的顺序不一定要递增,值也可以附加在每组的开头/结尾。
我不知道如何解决这个问题。我考虑过使用rbindlist(...,fill = TRUE),但随后将简单地附加值。
我认为带有 DT[, lapply(...), by = c("group")] 的一些表达式在这里可能会有用,但我不知道如何检查一个值是否已经存在。
【问题讨论】:
标签: r data.table