我想用data.table做一个简单的循环.我有20个二分(0,1)变量(从var_1到var_20),我想为此做一个循环:
dat[var_1==1, newvar:=1]
dat[var_2==1, newvar:=2]
dat[var_3==1, newvar:=3]
...
dat[var_20==1, newvar:=21]
Run Code Online (Sandbox Code Playgroud)
我的主要问题是我不知道如何使用循环指定i(即var_1 == 1,var_2 == 2 ...).下面简短的例子:
var_1 <- c(1, rep(0,9))
var_2 <- c(0,1, rep(0,8))
var_3 <- c(0,0,1, rep(0,7))
dat <- data.table(var_1, var_2, var_3)
dat[var_1==1, newvar:=1]
dat[var_2==1, newvar:=2]
dat[var_3==1, newvar:=3]
Run Code Online (Sandbox Code Playgroud)
有关如何使用循环执行此操作的任何想法?谢谢!
要利用 data.table 类,最好设置 key。
dat[ ,newvar:= NA_integer_]
for(i in ncol(dat)) {
setkeyv(dat, names(dat)[i])
dat[J(1), newvar:=i]
}
Run Code Online (Sandbox Code Playgroud)