首页 > 解决方案 > 如何使用分隔符将列拆分为多列,在 R 中保留行名和其他列?

问题描述

> require(reshape)
> df <- data.frame(Size=11:13, Letters=c('a|b','b|c','x|y'))
> rownames(df2)=c("Row1", "Row2", "Row3")

       Size Letters
Row1   11     a|b
Row2   12     b|c
Row3   13     x|y

我想用分隔符“|”分割字母列 在保留行名和大小列的同时分成多列,这样我的结果 df 看起来像:

      Size Col1 Col2
Row1   11    a    b
Row2   12    b    c
Row3   13    x    y

当我运行以下命令时,它不会保留行名:

df2=with(df, cbind(Size, colsplit(df$Letters, split = "\\|", names = c('Col1', 'Col2'))))

    Size Col1 Col2
1   11    a    b
2   12    b    c
3   13    x    y

标签: r

解决方案


你可以做:

tidyr::separate(df, Letters, into = c("Col1", "Col2"))

     Size Col1 Col2
Row1   11    a    b
Row2   12    b    c
Row3   13    x    y

或者,对您最初的尝试进行细微改动:

cbind(df["Size"], reshape::colsplit(df$Letters, split = "\\|", names = c('Col1', 'Col2')))

使用时不会保留行名with()colsplit()因此没有cbind()可查找的行名。


推荐阅读