将列数据拆分为未知列数

时间:2017-03-31 12:57:55

标签: r regex string split

我有一个非常混乱的名称列,名称可能看起来像下面的名字

names<-c("Mr John Jo Mcbride","Jim Bucket", "Farshad Jimbo Letrick")

输出可以是任意数量的列,从空格分隔成列。所以在第一个名称之上需要四列,第二列是2列,第三列是3列。

我不关心订单,我只想根据空间分隔符将数据分解为每行所需的列数。

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

names<-c("Mr John Jo Mcbride","Jim Bucket", "Farshad Jimbo Letrick")

strsplit(names,split = '\\s')

答案 1 :(得分:0)

你可以使用stringr包,它有一些很好的字符串操作功能,使用&#34; str_split_fixed&#34;将列拆分为分隔符。

1)计算整个名称中的单词数,将其保存在名为len的变量中。 2)使用&#34; str_split_fixed&#34;将其拆分为len的最大值。 3)根据您的方便重命名您的专栏。

data <- data.frame(names =c("Mr John Jo Mcbride","Jim Bucket", "Farshad Jimbo Letrick"),stringsAsFactors = F)
len <- sapply(gregexpr("\\W+", data$name), length) + 1
data$len <- len
library(stringr)
df_new <- data.frame(cbind(data,str_split_fixed(data$name, " ", max(len))))
names(df_new) <- c("names","length",paste0("name",1:max(len)))
df_new

<强>答案:

df_new
                  names length   name1  name2   name3   name4
1    Mr John Jo Mcbride      4      Mr   John      Jo Mcbride
2            Jim Bucket      2     Jim Bucket                
3 Farshad Jimbo Letrick      3 Farshad  Jimbo Letrick        
>