【发布时间】:2023-04-08 21:48:01
【问题描述】:
我有以下data.table
library(data.table)
dt <- data.table(V1=c(1,3,1,0,NA,0),
V2=c(1,0,1,0,1,3),
Q1=c(3,5,10,14,0,3),
Q2=c(0,1,8,NA,0,NA))
我想添加一个新列,其值为1:
如果V1,V2 中的任何列的值大于2,
和
如果 任何 列 Q1,Q2 的值大于 0
所以最后我想要这样的东西:
> dt
V1 V2 Q1 Q2 new
1: 1 1 3 0 0
2: 3 0 5 1 1
3: 1 1 10 8 0
4: 0 0 14 NA 0
5: NA 1 0 0 0
6: 0 3 3 NA 1
编辑
原则上,我希望有 2 个列名向量,例如 v_columms <- names(dt)[names(dt) %like%"V"] 和 q_columms <- names(dt)[names(dt) %like%"q"] 并使用这些
【问题讨论】:
-
dt[(V1 > 2 | V2 > 2) & (Q1 > 0 | Q2 > 0), new := 1]?您是否需要对现实中的更多列执行此操作?也许更好:dt[, new := as.integer((V1 > 2 | V2 > 2) & (Q1 > 0 | Q2 > 0))] -
是的,所以原则上我希望有 2 个向量,所以像
v_columms <- names(dt)[names(dt) %like%"V"]和q_columms <- names(dt)[names(dt) %like%"q"]并使用这些