从一个简单的数据表开始
ID MAX X1 X2 X3 X4
E0 9 2 1 2 3
E0 21 9 0 10 2
我想规范化从X1
到X4
除的所有列MAX
。
明确的data.frame方式是
dt$X1 <- dt$X1/dt$MAX
优雅的数据表方式是什么?
我尝试使用dt[, .SD/MAX, by = ID]
,但这也将MAX减小为1。
使用data.table v1.9.7
,我们还可以指定中的列.SDcols
,遍历各列(lapply(.SD, ...
),除以'MAX',然后将(assign :=
)输出分配给感兴趣的列。
dt[, paste0("X", 1:4) := lapply(.SD, `/`, MAX), .SDcols= X1:X4]
dt
# ID MAX X1 X2 X3 X4
#1: E0 9 0.2222222 0.1111111 0.2222222 0.3333333
#2: E0 21 0.4285714 0.0000000 0.4761905 0.0952381
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句