dt <-data.table(dummy = rep(c(0:1),each = 10),piece = rep(c(3:4)),values1 = c(10:29),values2 = c(20: 39))
我有一个这样的数据表。我要实现:如果dummy = 0,则为此数据表创建一个新列,其new_value1 =(values1 + values2)* piece; 如果dummy = 1,则创建另一个新列,其new_value2 = value1 + value2 * piece如何通过在r中使用循环来实现这一点?
谢谢!
我们在中指定条件i
并在中创建这些列j
library(data.table)
dt[dummy == 0, new_value1 := (values1 + values2) * piece
][dummy == 1, new_value2 := (values1 + values2) * piece]
或另一个选择是 dcast
dt[, new_value := (values1 + values2) * piece]
dcast(dt, seq_len(nrow(dt)) + piece + values1 + values2 ~
paste0('new_value', match(dummy, unique(dummy))))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句