我要过滤一列,并根据早期子集上其他列的值同时为现有data.table创建一个新列。以下是这样的示例-
library(data.table)
X <- data.table(id = 1:5, L = letters[1:5])
X[id > 2, 'ss' := paste(id, L)]
X
id L ss
1: 1 a <NA>
2: 2 b <NA>
3: 3 c 3 c
4: 4 d 4 d
5: 5 e 5 e
但是,如您所见,这不是返回子集,即返回行号3
至5
,而是返回整个数据表。任何指向正确有效方法的指针将受到高度赞赏。
答案 0 :(得分:1)
可能您可以单独应用它们。
library(data.table)
Y <- X[id > 2][,ss := paste(id, L)]
Y
# id L ss
#1: 3 c 3 c
#2: 4 d 4 d
#3: 5 e 5 e
您可以将na.omit
包裹起来,以尝试删除NA
值
na.omit(X[id > 2, 'ss' := paste(id, L)])
或再次子集
X[id > 2, 'ss' := paste(id, L)][id > 2]