我想添加 data.table
的特定列,并希望通过正则表达式选择列。举个例子。
library(data.table)
mydt <- data.table(
id = c(1, 2, 3),
x_0 = c(1, NA, 0), x_1 = c(2, 4, NA), x_2 = c(3, 5, NA), x_3 = c(NA, 6, NA),
y_0 = c(6, NA, 0), y_1 = c(5, 3, NA), y_2 = c(4, 2, NA), y_3 = c(NA, 1, NA)
)
mydt
id x_0 x_1 x_2 x_3 y_0 y_1 y_2 y_3
1: 1 1 2 3 NA 6 5 4 NA
2: 2 NA 4 5 6 NA 3 2 1
3: 3 0 NA NA NA 0 NA NA NA
我想添加标签为 0 的列。因此,我想要一个等于 的新列,而不是列
,所以像这样:x_0
和 y_0
>x_0 + y_0
my_preferred_dt
id x_1 x_2 x_3 y_1 y_2 y_3 new_col
1: 1 2 3 NA 5 4 NA 7
2: 2 4 5 6 3 2 1 NA
3: 3 NA NA NA NA NA NA 0
因为我有很多这样的列,所以我想根据正则表达式 ("_0$"
) 选择它们。
最佳答案
您可以将 Reduce
与 SD
/SDcols
结合使用以仅对列求和(通过 regex
)你想要:
mydt[, new_col := Reduce(`+`, .SD), .SDcols=grep("_0$", names(mydt), value=T)]
如果您需要删除“..._0”变量:
mydt[, grep("_0$", names(mydt), value=T) := NULL]
mydt
# id x_1 x_2 x_3 y_1 y_2 y_3 new_col
#1: 1 2 3 NA 5 4 NA 7
#2: 2 4 5 6 3 2 1 NA
#3: 3 NA NA NA NA NA NA 0
关于r - 通过正则表达式添加 data.table 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33526325/