2017-05-05 27 views
0

我有一個文本數據如下如何分割固定寬度的文本數據並在R中分配列名?

數據
V2

1 12384793849384u39840598093580985309580359803958035 
2 55132531453215532532523451325235324521435132523452 
3 52353251253253245132444444444444553241524351243532 
4 23515123532532512345214512345213551253245432542135 
5 23532115124542352335122222222435451435143251234542 
6 13245432543215214352152234513425234555512311235412 
7 1327r6tr87t987rt38r7t93487y32987y3287y39o8r2y9874r 

我還有一個密鑰文件如下

密鑰文件

 header      startkey endkey 
1 Claim Unique ID     0  12 
2 Provider CCN Number    13  18 
3 Beneficiary Hic Number   19  29 
4 Claim Type Code     30  31 
5 Claim From Date     32  41 

所以,現在我想提取每行0到12個字母,並將其分配給唯一的id變量,提供者c爲13到18個字母CN號變量,並以同樣的方式對所有的變量

預計輸出

ClaimUniqueID ProviderCCNNumber BeneficiaryHicNumber ClaimTypeCode ClaimFromDate 
    132364748474 u74635    54673829273   87   7474747474 
    231763987435 123433    12353244513   23   1343434444 
    193274674474 143243    23342535435   23   1243213424 

試圖

data <- read.fwf("cclf_text_file.txt",widths=10000) 
keyfile = read.csv("cclf_key_file.csv",header = T) 

fixed_length = function(input_data,key_file,output_data){ 
input_data[] = Map(substr,input_data[keyfile$header],keyfile$startkey,   keyfile$endkey) 
filename = paste(deparse(substitute(output_data)), ".csv",sep="") 
write.csv(input_data,file = filename) 
} 

請幫我在這

回答

1

我認爲以下應工作(這是很難說沒有一個可重複的例子)

keyfile <- read.csv("cclf_key_file.csv",header = T) 
data <- read.fwf("cclf_text_file.txt",widths=keyfile$endkey - keyfile$startkey + 1) 
names(data)<-as.character(keyfile$header)