【问题标题】:dplyr:separate auto name "into"-columns based on "col" [duplicate]dplyr:基于“col”分离自动名称“into”-columns [重复]
【发布时间】: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.tablecbind(read.table(text=as.character(df$COL1)), df) 来做到这一点
  • separate(df, col = COL1, into = paste0("COL1_", 1:3))?
  • 感谢您的回复! akrun:这个提议的问题是它保留了原始列并且不改变它。大卫:问题是我仍然必须手动指定3 和原始列名COL1_

标签: r dplyr tidyr


【解决方案1】:

这可以通过cSplit 自动完成

library(splitstackshape)
 cSplit(df, 'COL1', ' ')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多