私は約100個のデータセットを1つのデータセットにマージする必要があるので、多くのデータセットを一度にマージする方法を示す記事を見てきました(例えばhereとhere)、私の問題はユニークです。私の実世界のデータは私のハードドライブに保存され、同様の名前が付けられます(例えば、household2010
、household2011
、household2012
とperson2010
、person2011
は、person2012
。彼らは、以下のグローバルenvironment.Exampleにロードする必要はありません。多くのペアのデータを別々のデータセットにまとめます
データを作業:
library(tidyverse)
household2010 <- tribble(
~id, ~var2, ~var3, ~var4, ~var5,
"1", "1", "1", "a", "d",
"2", "2", "2", "b", "e",
"3", "3", "3", "c", "f"
)
person2010 <- tribble(
~id, ~var6, ~var7,
"1", "1", "1",
"2", "2", "2",
"3", "3", "3",
"4", "4", "4"
)
household2011 <- tribble(
~id, ~var8, ~var9, ~var10,
"1", "1", "1", "1",
"2", "2", "2", "2",
"3", "3", "3", "3",
"4", "4", "4", "4"
)
person2011 <- tribble(
~id, ~var11, ~var12, ~var13,
"1", "1", "1", "1",
"2", "2", "2", "2",
"3", "3", "3", "3",
"4", "4", "4", "4",
"5", "5", "5", "5"
)
私はperson2010
でhousehold2010
をマージし、hhperson2010
と呼ばれる新しいデータセットを作成する必要があり、私はあまりにもhousehold2011
とperson2011
にこれを実行する必要が個別に私が行うことができます:。。
hhperson2010 <- left_join(household2010, person2010, by = "id")
hhperson2011 <- left_join(household2011, person2011, by = "id")
これは、100個以上のデータペアがある場合、これは厄介なものになります。 lapply
を使用してデータセットのリストを参照してマージすることはできますか?以下のような何か:
dflist1 <- list(household2010, household2011)
dflist2 <- list(person2011, person2011)
lapply(function(x) left_join(dflist, dflist2, by = "id")
ありがとう@ d.b。しかし、これは1つのデータセットを作成するので機能しません。別々のデータセットにマージするには、ペアにする必要があります。 – scottsmith
吸いこんでやってみませんか?これらの100のテーブルはどこかから来ています。あなたはファイルからそれらをインポートしていますか?そこに 'lapply'して、決してメモリに100個の物を持ってはいけません。データの出所をもう少し考えてください。地球環境で100個の変数を避けるよりスマートな方法を提案することができます – dmi3kno
ファイルはすべて私のハードドライブに保存されたRDataオブジェクトです(上記の私の例を編集してください)。地球環境にそれらを実際にロードせずにすべてを一度に行うことができれば、それは素晴らしいことです。 – scottsmith