2016-05-28 7 views
-2

私は20個の.CSVファイルを持ち、それらはすべて同じ行数/列数(1行42列)を持っています。私はすべてのデータフレームを作成し、各CSVファイルを自分のデータフレームの1つの行として、CSVファイルの名前を自分の行の名前として使用したいと考えています。これも可能ですか?私が探しています複数のCSVファイルを同時にRで読み込み、すべてを1つのデータフレームに結合

A.csv 
10 21 32 45 

B.csv 
33 45 93 90 

C.csv 
12 93 Na 21 

結果のデータフレームは、次のようになります:

A 10 21 32 45 
B 33 45 93 90 
C 12 93 Na 21 
+0

-1明確に理由を説明してください:私の好適な解決策は、これを行うためにdplyr::bind_rowsと一緒readr::read_csvを使用することです。 – hunajujiw

+3

私はそうしませんでしたが、おそらく30以上のq&aがあります。最小限の努力をしてください。 – hrbrmstr

答えて

2

あなたはすべてをlapplyたループと組み合わせるlist.files()機能を使用しようとすることができ例でこれを説明するために

ファイルを読み込み、data.frameとして読み込みます。最後に、do.call(rbind ...は別々のデータフレームを互いに結合:

do.call(rbind, lapply(list.files(PathToCsvFile, pattern = ".csv", full.names = T), read.csv)) 

Upadate

filePaths <- list.files(PathToCsvFile, pattern = ".csv", full.names = T) 
cbind(gsub(".csv", "", basename(filePaths)), do.call(rbind, lapply(filePaths, read.csv))) 
+0

あなたの答えをありがとう。 「ファイル(ファイル、 "rt")のエラー:接続を開くことができない さらに:警告メッセージ: ファイル内(ファイル、 "rt"): は開けませんファイル 'D38hz6lVkkxE.csv':いいえそのようなファイルまたはディレクトリ '私はファイルをチェックし、それは完全に正常に動作していると破損していません。 – hunajujiw

+0

PathToCsvFileは、csvファイルが置かれているディレクトリである必要があります。 – Psidom

+0

'list.files()'に 'full.names = TRUE'が必要かもしれません –

3

両方data.tablerbindlist)とdplyrbind_rows)がこれを行うための機能を持っています。あなたが与えた場合

library(readr) 
library(dplyr) 

bind_rows(
    lapply(
    list.files(
     "path/to/csv_files", 
     pattern = ".csv", 
     full.names = TRUE 
    ), 
    read_csv, 
    header = FALSE, 
    na_strings = c("Na") 
) 
) 
関連する問題