拆分数据为列
问题描述:
我有一个行号,我需要拆分成多列的一大块。拆分数据为列
一个例子是:
P040120000000000000000001001101210000000120000000000
前三个号码是一类,接着是下9,等等等等。我很难找出将其分成多个列或数据框的方法。我是R新手,所以我会尽我所能跟上答案。谢谢!
答
如果要提取的模式总是000 000000000 000000000 000000000 000000000 000000000 0000...
那么这是一个非常老式的方式在R做这个。 请注意模式是3,9,9,9,9,y其中y是那些字符串don不适合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
类型为nchar( )你的字符串总是52? – MaxPD
您可以使用'read.fwf'并指定'widths'。它跟随3,9,3,9,3,9等吗? – akrun
他的字符串不符合:3,9,3,9,3 ....'P04 012000000 000 000000000 100 110121000 000 012000000 000 0'。他的字符串也不一致:3,9,9,9,9 ....'P04 012000000 000000000 000100110 121000000 012000000 0000' – MaxPD