【发布时间】:2015-10-15 13:39:02
【问题描述】:
假设我有一个数据框:
require(dplyr)
df <- data.frame(COL1 = c("a1 a2 a3", "b1 b2 b3", "c1 c2 c3"),
COL2 = c("x", "y", "z"),
COL3 = c("1", "2", "3"))
我希望结果是
COL1_1 COL1_2 COL1_3 COL2 COL3
1 a1 a2 a3 x 1
2 b1 b2 b3 y 2
3 c1 c2 c3 z 3
我现在要做的是
df %>%
separate(col = COL1, sep = " ", into = c("COL1_1", "COL1_2", "COL1_3"))
有没有办法自动化表达式的into 部分?
类似的东西使用原始列名COL1 并将其与下标_i 连接起来,i 是“子列”。该方法需要自动适应不同数量的“子列”,例如a1, a2, a3,..., an.
【问题讨论】:
-
我们可以使用
read.table即cbind(read.table(text=as.character(df$COL1)), df)来做到这一点 -
separate(df, col = COL1, into = paste0("COL1_", 1:3))? -
感谢您的回复! akrun:这个提议的问题是它保留了原始列并且不改变它。大卫:问题是我仍然必须手动指定
3和原始列名COL1_