2015-11-20 19 views
5

グローバル環境で4つのデータフレームがあります。彼らはpropens1、propens2、propens3、propens4という名前です。私は "bmi"という名前の5番目のファイルを持っています。そして、私は4つのプロペンファイルすべてとbmiをマージしたいと思います。 dplyr joinまたはbase mergeを使って個別にマージできますが、4つではなく1つのステートメントでマージする方法があるのだろうかと思っていました。グローバル環境内の複数のデータフレームを1つのファイルにマージする

これは私が試したものですが、動作しません。どんな提案も歓迎され、評価されます。

flist=ls(pattern="propen") 
sapply(flist,function(x){merge(x,bmi,by="cfact",all.x=T)}) 

答えて

6

関連するデータフレームが複数ある場合は、それらをグローバル環境内ですべて分離するのではなく、リストにまとめておくことをお勧めします。あなたの声明に基づいて

彼らはあなたが4つのデータフレームをしたいので、我々は次に

datalist <- mget(ls(pattern = "propens[1-4]")) 

と、すべてのデータフレームを収集することができる

propens1、propens2、propens3とpropens4命名されています結果は、私たちがしなければならないことは、それらのそれぞれについてmerge()です。リストにデータフレームがあるので、lapply()で簡単にデータフレームを作成できます。

lapply(datalist, merge, y = bmi, by = "cfact", all.x = TRUE) 
関連する問題