2015-12-30 112 views
0

我有一個行號,我需要拆分成多列的一大塊。拆分數據爲列

一個例子是:

P040120000000000000000001001101210000000120000000000 

前三個號碼是一類,接着是下9,等等等等。我很難找出將其分成多個列或數據框的方法。我是R新手,所以我會盡我所能跟上答案。謝謝!

+0

類型爲nchar( )你的字符串總是52? – MaxPD

+1

您可以使用'read.fwf'並指定'widths'。它跟隨3,9,3,9,3,9等嗎? – akrun

+0

他的字符串不符合: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

回答

1

如果要提取的模式總是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