2017-05-08 6 views
1

私はRで非常に新しく、今は複数の.csvファイル(〜60程度)を読み込み、それらを一緒にマージしようとしています。それらはすべて同様の列を持ち、ファイル名はdem_file_30、dem_file_31のようになります。複数の.csvファイルをrに読み込んでマージする方法は?

私はスクリプトをオンラインで使用しようとしていますが、何らかのエラーが続いています。私は手でそれを行うことができると確信していますが、それは本当に面倒です。

例:

file_list <- list.files("/home/sjclark/demographics/") 
list_of_files <- lapply(file_list, read.csv) 
m1 <- merge_all(list_of_files, all=TRUE) 
Error: merge_all doesn't exist 

この1つはRにそれらを読んでいるようだが、その後、私はそれの後に行う方法はないよ...助けて?

multMerge = function(mypath){ 
    filenames = list.files(path = mypath, full.names = TRUE) 
    datalist = lapply(filenames, 
        function(x){read.csv(file = x, 
             header = TRUE, 
             stringsAsFactors = FALSE)}) 
    Reduce(function(x,y) {merge(x, y, all = TRUE)}, datalist) 
} 

それとも、あなたは違い源から一緒に物事をつなぎいる:あなたはR-bloggers (credit to Tony Cookson)上の共有素敵な機能を使用しようとする可能性があるかのように

setwd("/home/sjclark/demographics/") 
filenames <- list.files(full.names=TRUE) 
All <- lapply(filenames,function(i){ 
read.csv(i, header=TRUE) 
}) 
+1

merge_allは、おそらくそれからであるベースR.から関数ではありません

ロリーを助け

library(plyr) filenames <- list.files(path = "mypath", pattern = "*", full.names=TRUE) import.list <- ldply(filenames, read.csv) 

希望:

このタスクの私のコードがあるがplyrからldply使用していますか? – www

+1

これはリシェイパッケージのものですか?その場合は、パッケージをインストールしてください。 – www

答えて

5

それが表示されますか?いずれにしても、mergeは欠落していた重要な基底R関数です。 merge_allは、どのパッケージにも存在しません。

Rを使い慣れているので(プログラミングしていても)、この関数を使用する前にこの関数を定義する必要があります。私は非常によく似た作業をやっているとdplyrbind_rowsを使用してそれを行うにはより高速/より良い方法があるかどうかも疑問に思った

my_data <- multMerge("/home/sjclark/demographics/") 
+0

"merge all"の代わりに "merge"を使用してプラグインすると、次のようになります:as.data.frame(y)のエラー:引数 "y"がなく、デフォルトなし –

+0

ブログの記事で説明しているように、 'は一度に2つのオブジェクトに対してのみ動作します。私がちょうど共有した関数は、 'Reduce'という別の関数を使って反復的にあなたのデータリストにマージを適用することでこれを処理します。私はここに提示された機能よりも、この仕事を達成するためにもっと簡潔な方法があるとは思わない。 – HFBrowning

1

:あなたは、他の関数のようにそれを呼び出すことができることをやったら。

+0

ありがとうございました! –

+0

OPは**マージしない**追加する必要がありますか?セマンティクスは非常に重要です。 – Parfait

+0

@JulietRあなたがこの答えに満足しているなら、それを受け入れてください/それに投票してください –

関連する問題