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

R中的文本到列等效,按字符拆分数据帧,r,R,我想知道如何像excel在“文本到列”功能中那样拆分列。stackexchange上有许多教程介绍如何按字符拆分列,但它们没有介绍我需要的三件事: 1) 。使用列,其中只有部分行具有该字符 2). 使用具有许多列的数据帧 3). 将列视为字符/因子 例如,我有一个数据帧 df <- data.frame(V1 = c("01, 02", "04", "05, 06", "07, 08", "09", "10"), V2 = c("11, 12", "14", "1

我想知道如何像excel在“文本到列”功能中那样拆分列。stackexchange上有许多教程介绍如何按字符拆分列,但它们没有介绍我需要的三件事:

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")
我将如何在R中执行类似的操作,记住我拥有的数据集有许多列,因此重命名代码中的每一列是不实际的

我希望这是清楚的。谢谢你的帮助

这会有帮助吗

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
如果希望两列都被拆分

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
默认值是
类型。convert=TRUE
,它将转换为
数值

数据
df使用strsplit进行拆分,然后使用“[”进行访问似乎是可行的。你知道这些是我希望的开始因素吗

spl <-strsplit(as.character(df$V1), ",")
data.frame(V1= sapply(spl, "[", 1), V2 = sapply(spl, "[", 2), df$V2)
  V1   V2  df.V2
1 01   02 11, 12
2 04 <NA>     14
3 05   06 13, 14
4 07   08 11, 14
5 09 <NA>     13
6 10 <NA>     15

spl您的
df
有一个
缺失。有趣的技术。我不明白[“有效。你能解释一下吗?再次感谢tipalso,还有一件事,我在最初的帖子中提到,我有太多的列要命名。我如何只在一列上命名?在你的代码中,我似乎必须重命名所有列。“”是Extract函数。我给它由
strsplit
函数生成的列表作为它的第一个参数,1或2作为位置参数。所以…你想让这个过程循环并从所有原始列中为这些新拆分列生成名称,但你不知道真正有多少列?有没有r伊森:@akrun的解决方案不能满足请求?
 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") )
spl <-strsplit(as.character(df$V1), ",")
data.frame(V1= sapply(spl, "[", 1), V2 = sapply(spl, "[", 2), df$V2)
  V1   V2  df.V2
1 01   02 11, 12
2 04 <NA>     14
3 05   06 13, 14
4 07   08 11, 14
5 09 <NA>     13
6 10 <NA>     15