PC上の1つのフォルダに保存した.csvファイルが多数あります。すると、次のように私は、論文データセットのリストを作成します。複数の.csvデータファイルを1つのデータフレームにマージする
> file_list <- list.files()
> file_list
[1] "ABWAbwut50.csv" "ABWEinfam50.csv" "ABWFeldwaldasph50.csv" "ABWGarage50.csv"
[5] "ABWGemeindestr50.csv" "ABWHotel50.csv" "ABWInd50.csv" "ABWIntflaechen50.csv"
[9] "ABWKantonsstr50.csv" "ABWMehrfam50.csv" "ABWNutzwald50.csv" "ABWSchutzwald50.csv"
[13] "ABWstahlmitvieh50.csv" "ABWStromut50.csv" "ABWWeideland50.csv"
同じ列sontain .csvファイル、小数は.
を使用し、カラムは;
で区切られています。
for (file in file_list){
if (!exists("dataset")){
dataset <- read_delim(file, ";", escape_double = FALSE, trim_ws = TRUE)
}
}
dataset
これらのデータセットを組み合わせようとしましたが、最初のファイルのみを読み込みます。 15個の.csvファイルをすべて1つのデータフレームにまとめるにはどうすればよいですか?私は何かが間違っていたとのいずれかのファイル(実際に私は、ファイル内の行の唯一のカップルを知っている)があるのみ7と仮定し
> View(dataset)
> dataset <- do.call("rbind",lapply(file_list,
+ FUN=function(files){read.table(files,
+ header=TRUE, sep=";")}))
Show Traceback
Rerun with Debug
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 103 did not have 8 elements
:
私は別のコードを実行したとき、私は、次のエラーメッセージが表示されました8の代わりに列を使用します。私は、いくつかの異常があるかどうかを調べるために、すべてのファイルを個別に検討したくありません。パターンに従わないこれらの線を自動的に削除するにはどうすればよいですか?ファイルの
> dput(dataset[1:10,])
structure(list(Berechnung = c("EconoMe original", "Berechnung 1",
"Berechnung 2", "Berechnung 3", "Berechnung 4", "Berechnung 5",
"Berechnung 6", "Berechnung 7", "Berechnung 8", "Berechnung 9"
), Situation = c("Nach Massnahme Neue Gerinnefuehrung Gafenbach",
"Nach Massnahme Neue Gerinnefuehrung Gafenbach", "Nach Massnahme Neue Gerinnefuehrung Gafenbach",
"Nach Massnahme Neue Gerinnefuehrung Gafenbach", "Nach Massnahme Neue Gerinnefuehrung Gafenbach",
"Nach Massnahme Neue Gerinnefuehrung Gafenbach", "Nach Massnahme Neue Gerinnefuehrung Gafenbach",
"Nach Massnahme Neue Gerinnefuehrung Gafenbach", "Nach Massnahme Neue Gerinnefuehrung Gafenbach",
"Nach Massnahme Neue Gerinnefuehrung Gafenbach"), NK = c(0, 0,
0, 0, 0, 0, 0, 0, 0, 0), PID = c(2639L, 2639L, 2639L, 2639L,
2639L, 2639L, 2639L, 2639L, 2639L, 2639L), Case = c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), Differenz = c(0, 0, 0, 0, 0, 0,
0, 0, 0, 0), Prozess = c("Murgang", "Murgang", "Murgang", "Murgang",
"Murgang", "Murgang", "Murgang", "Murgang", "Murgang", "Murgang"
), Objektart = c("Abwasser unter Terrain", "Abwasser unter Terrain",
"Abwasser unter Terrain", "Abwasser unter Terrain", "Abwasser unter Terrain",
"Abwasser unter Terrain", "Abwasser unter Terrain", "Abwasser unter Terrain",
"Abwasser unter Terrain", "Abwasser unter Terrain")), .Names = c("Berechnung",
"Situation", "NK", "PID", "Case", "Differenz", "Prozess", "Objektart"
), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
あなたは 'read.tableを、つまり'埋める= true'に引数を使用することができます(TRUE =記入し、ファイル、ヘッダ= TRUE、9月= ";") 'または一部が8に比べてわずか7列を持っている場合は、 data.table'から 'dplyr'または' rbindlist'の 'bind_rows'を使用してください。 – akrun
@arkunありがとう、私は前にそれを試して、'未使用引数(fill = TRUE) 'を得ました。 – Danka
[ http://stackoverflow.com/a/32888918/2204410)。 'data.table'の' dplyr'や 'rbindlist'の' bind_rows'を使う方が簡単です。 – Jaap