R中的文本到列等效,在字符上拆分数据帧

tom*_*tom 7 r

我想知道如何以与excel在"text-to-column"功能中类似的方式拆分列.stackexchange上有很多关于如何按字符分割列的教程,但它们没有解决我需要的3件事:

1).使用列,其中只有一些行具有字符2).使用包含许多列的数据框3).将列视为字符/因子

例如,我有一个数据帧

    df <- data.frame(V1 = c("01, 02", "04", "05, 06", "07, 08", "09", "10"),
         V2 = c("11, 12", "14", "13, 14", 11, 14", "13", "15")
Run Code Online (Sandbox Code Playgroud)

如果我在excel中使用V1中的文本到列,我最终会在逗号上分割3列.将仅为那些在其中包含逗号的单元格创建第二列.对于没有列的行,会有空白单元格.我也可以选择将新列视为数字或文本.在这种情况下,我需要前导零,所以它应该被视为文本.

它看起来像这样

           V1    V2   V3      
    Row 1   01   02   11,12
    Row 2   04   NA   14
Run Code Online (Sandbox Code Playgroud)

我如何在R中做类似的事情,记住我拥有的数据集有很多列,因此重命名代码中的每一列是不实际的.

我希望这很清楚.感谢您的帮助!

akr*_*run 9

可能这有帮助

library(splitstackshape)
cSplit(df, 'V1', sep=", ", type.convert=FALSE)
#       V2 V1_1 V1_2
#1: 11, 12   01   02
#2:     14   04   NA
#3: 13, 14   05   06
#4: 11, 14   07   08
#5:     13   09   NA
#6:     15   10   NA
Run Code Online (Sandbox Code Playgroud)

如果你想要两个列 split

cSplit(df, 1:ncol(df), sep=",", stripWhite=TRUE, type.convert=FALSE)
#    V1_1 V1_2 V2_1 V2_2
#1:   01   02   11   12
#2:   04   NA   14   NA
#3:   05   06   13   14
#4:   07   08   11   14
#5:   09   NA   13   NA
#6:   10   NA   15   NA
Run Code Online (Sandbox Code Playgroud)

defaulttype.convert= TRUE,这将转化为numeric.

数据

 df <- data.frame(V1 = c("01, 02", "04", "05, 06", "07, 08", "09", "10"),
      V2 = c("11, 12", "14", "13, 14", "11, 14", "13", "15") )
Run Code Online (Sandbox Code Playgroud)