将数据拆分为列

时间:2015-12-30 06:05:48

标签: r split dataframe

我在一行中有一大块数字需要拆分成多列。

一个例子是:

P040120000000000000000001001101210000000120000000000

前三个数字是一个类别,接下来是接下来的九个,依此类推。我无法找到将其拆分为多列或数据框的方法。我是R的新手,所以我会尽力跟上回复。谢谢!

1 个答案:

答案 0 :(得分:1)

如果要提取的模式总是000 000000000 000000000 000000000 000000000 000000000 0000...,那么这里是一种非常古老的方式在R中执行此操作 请注意,模式是3,9,9,9,9,y,其中y是不适合9个字符的字符串。另请注意,这可以用于长度超过52的字符串。

x<-"P040120000000000000000001001101210000000120000000000"
[1] "P040120000000000000000001001101210000000120000000000"

这里的字符串是"P040120000000000000000001001101210000000120000000000",你想在不同的列中以这种方式提取它

P04 012000000 000000000 000100110 121000000 00000

library(stringr)

x<-"P040120000000000000000001001101210000000120000000000"
Column1<-str_sub(x,1,3)
sub<-str_sub(x,4, nchar(x))
st<-1
en<-9
nchar(sub)
C<-as.character()
while (en!=nchar(sub)-(nchar(sub)%%9) )
{
  C<-cbind(C, str_sub(sub,st,en))
    st<-en+1
    en<-en+9
}
C<-cbind(C,str_sub(sub,en, nchar(sub)))
D<-data.frame(cbind(Column1,C))
D

Column1        V2        V3        V4        V5    V6
1     P04 012000000 000000000 000100110 121000000 00000