我想通过在数据帧中分割向量来创建新列。
我有这样一个数据框:
YEAR Variable1 Variable2
2009 000000 00000001
2010 000000 00000001
2011 000000 00000001
2009 000000 00000002
2010 000000 00000002
2009 000000 00000003
...
2009 100000 10000001
2010 100000 10000001
...
2009 100000 10000011
....
如您所见,变量2与变量1相关(变量2 =变量1 +后两位数字:例如01、02、03 ...表示子类别)。我想将Variable2拆分成与子类别一样多的变量。结果应为:
YEAR Variable1 Variable2 Variable3 Variable4 ...
2009 000000 00000001 0 0
2010 000000 00000001 0 0
2011 000000 00000001 0 0
2009 000000 0 00000002 0
2010 000000 0 00000002 0
2009 000000 0 0 00000003
...
2009 100000 10000001 0 0
2010 100000 10000001 0 0
...
2009 100000 0 0 0 ... 10000011
您将如何进行?我以为我应该尝试在循环中重新编码Variable2。.我尝试通过操纵字符串,但是并没有解决问题。
这将起作用。首先,让我们构建数据。
values <- paste0("0000000", 1:4)
library(data.table)
dt <- data.table(val = sample(values, 10, replace = TRUE))
for循环足以定义新列。
for(level_var in dt[, unique(val)]){
dt[, eval(level_var) := ifelse(val == level_var, level_var, 0)]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句