根据过滤后的值为数据表创建一个新列

时间:2020-02-14 11:42:57

标签: r data.table data-manipulation

我要过滤一列,并根据早期子集上其他列的值同时为现有创建一个新列。以下是这样的示例-

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

但是,如您所见,这不是返回子集,即返回行号35,而是返回整个数据表。任何指向正确有效方法的指针将受到高度赞赏。

1 个答案:

答案 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]
相关问题