【问题标题】:Separate a column in R [duplicate]在r中分隔列[重复]
【发布时间】:2015-10-31 20:28:43
【问题描述】:

数据.df

colA

2 AD
3 KF
4 GH

我想将此列分成两列

 colA  ColB
  2     AD
  3     KF
  4     GH

这是我的代码:

library(dplyr)

X1 <- data.df

ca <- as.data.frame(X1) %>% separate(X1,col=colA, into = paste("colA","colB"))

错误:值未在 1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19 处拆分为 1 个, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45、46、47、48、49、50、51、52、53、54、55、56、57、58、59、60、61、62、63、64​​p>

我的代码有什么问题?

【问题讨论】:

    标签: r split multiple-columns


    【解决方案1】:

    当你管道命令时,每个函数的第一个参数将是 data.frame,所以试试

    library(tidyr)
    dat %>% separate(colA, c("colA", "colB"))
    #   colA colB
    # 1    2   AD
    # 2    3   KF
    # 3    4   GH
    

    数据

    dat <- structure(list(colA = structure(1:3, .Label = c("2 AD", "3 KF", 
    "4 GH"), class = "factor")), .Names = "colA", row.names = c(NA, 
    -3L), class = "data.frame")
    

    【讨论】:

    • 谢谢您的回答,问题解决了!
    【解决方案2】:

    我们可以使用来自base Rread.table 来做到这一点。如果初始数据集中的“colA”是factor类,则转换为character,并使用read.table。我们可以使用col.names 参数指定列名。

    read.table(text=as.character(dat$colA), sep='',
                          col.names=paste0('col', c('A', 'B')) )
    #   colA colB
    #1    2   AD
    #2    3   KF
    #3    4   GH
    

    另一个选项是来自splitstackshapecSplit。我们在splitColssep 中指定要拆分的列。 direction 默认为“宽”。

     library(splitstackshape)
     cSplit(dat, 'colA', ' ')
    

    注意:@nongkrong 帖子中的“dat”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多