2017-01-05 10 views
-3

私はRoper CenterからRにいくつかのデータを読んで、何らかの分析をしようとしています。古いデータは時々ASCII形式でしか出現せず、数字のデータファイルに過ぎず、スペースや区切り文字がないこともあります。また、すべての人には複数の行があります。ここで私はうまくいけば、私は混乱それをしませんでしたが、私はあなたがこのデータを取得するためにローパーセンターへの加入が必要だと思う、そこにいくつかの数字を変更する例回答者ごとに複数の回答があるASCIIファイルを読む

0001 01 06722121  101632   3113581R50106    050110M323 
0001 0202089917300208991744 100154109020B73013.22  1O     
0001 039049MON FEB 8 1999 05:30pm 1 8 0208991830 6:30PM   05071 
0001 04    5          51   
0001 052206 32  1 21      111       
0001 06  1122223413323      1122160921080711122112 11 
0001 0722221205111223241121212220612111111122 21 2222      
0002 01 09318035  001582   2123551R00106    0501I333 
0002 0202089917320208991746 50074616080B42014.20  1O    
0002 039039MON FEB 8 1999 05:31pm 1 8 0208991831 6:31PM   05041 
0002 04    2          61   
0002 05 206 32  3 11      121       
0002 06  1245545554555      1152080614031221121131 11 
0002 0752321202112112322112434410722131242122 21 122222 

です。

回答者ごとにいくつかの要素を抽出して列に入れる必要があります。悪いことにこれを何度もやっているので、この場合にのみ機能するコードは実用的ではありません。

これまでRでパッケージリーダーを使用していましたが、1人あたり多くの行が複雑になり、Rパッケージや単純な関数を使ってこれを処理する方法を誰かが知っているかどうか疑問に思っていました。

このサンプルではすべての重みを取得することをお勧めします。それらは列13-15にあり、各人の第1行にある。

+1

入力例(またはそのさらに小さい試料)指定された所望の出力を入力してください、なぜなら私にはあなたが達成しようとしていることが完全にはっきりしていません – digEmAll

+0

私はちょうどそれをより明確にすべき編集を追加しました。 – debo

+0

の複製のように見えます:http://stackoverflow.com/questions/15596679/read-observations-in-fixed-width-files-spanning-multiple-lines-in-r。 Rは、入力データがきれいで長方形の場合に最適です。このような奇妙なフォーマットがある場合は、別の場所で前処理することが最善の方法です。 SASのようなプログラムは、このような狂ったフォーマットを読むのに良い仕事をします。 – MrFlick

答えて

-1

クールソリューション:ファイルには固定幅の辞書が付属していますか?その場合、下記のようにreadr::read_fwf

醜い解決方法を使用してください。多くのデータを持っている場合にはおそらくチョークし、いくつかの変数を分離できない可能性があります。

xは、ASCIIファイルを指定します。これで、ニート変数名とデータを再インポートし、正しい列タイプを設定することができる

library(dplyr) 
library(readr) 

x <- read_lines(x) 
x <- data_frame(
    uid = str_sub(x, 1, 4), # careful here, assuming UIDs are 4-length 
    txt = str_sub(x, 8)  # careful here too 
) 

x <- lapply(unique(x$uid), function(y) { 
    paste0(x$txt[ x$uid == y], collapse = " ") %>% 
    strsplit("\\s+") %>% 
    unlist %>% 
    matrix(ncol = length(.)) %>% 
    as_data_frame 
}) %>% 
    bind_rows %>% 
    write_csv("whatever.csv") 

x <- read_csv(x, col_names = c(
    # column names 
), 
col_types = "cccciiii -- etc.") 
+0

私はあなたがクールなソリューションを選んだことを本当に願っています! –

+0

私はそのパッケージに興味がありますが、私がしたことはpythonを使って、ファイルを解析したものを書いたことです。私は周りを見回しても、区切り文字なしで厳密に固定幅を扱うことはできませんでした。そのパッケージができるかどうか疑問に思っています。 – debo

関連する問題