2016-10-20 6 views
0

11個のファイルから.txt(fwf)形式のDFを作成しようとしています。R 1つのデータフレームに複数のfwfを読み込む

AA F AD PR PA POSICION T PESO (KG.) UNIDADES V.ESTADISTI DF 
10 E 01 01 AT 02101981 3 000000000053 000000000000 000000035541 01 
10 E 01 01 AT 03027000 3 000000000000 000000000000 000000005940 01 
10 E 01 01 AT 15091010 3 000000000012 000000000000 000000019500 01 
10 E 01 01 AT 16010091 3 000000000154 000000000000 000000105195 01 
10 E 01 01 AT 16024919 3 000000000015 000000000000 000000004724 01 
10 E 01 01 AT 16051000 3 000000000043 000000000000 000000464400 01 
10 E 01 01 AT 16059090 3 000000000006 000000000000 000000020234 01 

とそのAに保管:私はこれが私のデータがどのように見えるかです(あなたが幅を指定する必要がありますよう)

をチェックしread.csvのためではなく、FWFのためのいくつか良いアドバイスを発見しました名前のディレクトリ、ここではサンプル:

Files<-c("tr00an24.txt" "tr00an38.txt" "tr00an43.txt") 

そして、単一のファイルのためのこれまでのところ、この作品:

Trade00<-read.fwf(Files[1], 
       widths = c(2, 2, 3, 3, 3, 9, 2, 13, 13, 13, 3), 
       colClasses = c(rep("character", 7), rep("numeric", 3), 
           "character"), 
       header = TRUE, 
       col.names = c("AA", "F", "AD", "PR", "PA", "POSICION", "T", 
          "PESO (KG.)", "UNIDADES", "V.ESTADISTI", 
          "DF") 
       ) 

Howeve rを試してみると、

Trade00<-lapply(Files_00[1:2], read.fwf, 
         widths = c(2, 2, 3, 3, 3, 9, 2, 13, 13, 13, 3), 
         colClasses = c(rep("character", 7), rep("numeric", 3), 
            "character"), 
         header = TRUE, 
         col.names = c("AA", "F", "AD", "PR", "PA", "POSICION", "T", 
            "PESO (KG.)", "UNIDADES", "V.ESTADISTI", "DF") 
) 

DFの代わりにDFのリストを返します。どういうわけか、Rに新しいDFを既存のものに追加するように指示する必要がありますが、どのように見つけることができません。確かに

が行うのは簡単なものですが、私はその周りに自分の道を見つけることができない、forループを使用しなくても...

何かアドバイスが

+2

'do.call(rbind、listOfDataFrames)'はすべてのデータフレームを一緒に追加します。 – Barker

+1

'readr'にはチェックアウト可能な固定幅のファイルを扱うための素晴らしいユーティリティがあります。上記の代わりに 'dplyr :: bind_rows'があります。 – alistaire

答えて

0

感謝感謝!私はdo.callを試してみましたが、この

Trade00 <- do.call("rbind", lapply(Files_00[1:2], function(fn) 
    data.frame(Filename=fn, read.fwf(fn, 
            widths = c(2, 2, 3, 3, 3, 9, 2, 13, 13, 13, 3), 
            colClasses = c(rep("character", 7), rep("numeric", 3), 
                "character"), 
            header = TRUE, 
            col.names = c("AA", "F", "AD", "PR", "PA", "POSICION", "T", 
                "PESO (KG.)", "UNIDADES", "V.ESTADISTI", 
                "DF")) 
    ))) 
関連する問題