複数のデータフレームを1つの「マスタ」データフレームにマージする複数のスレッドがありますが、代わりに1つの参照データフレームを取得し、他のデータフレームを分離したままにします。私はlapplyと 'for'ループを使用しようとしましたが、それを行う方法を理解していません。 (免責事項:私はR.に新たなんだ)1つのデータフレームを複数のデータフレームに個別にマージ/結合する
df_geoが基準データフレームであり、このようになります。
district sector cell village village_code
west sectorA cellA villageA XXXXXXXX
west sectorA cellA villageB XXXXXXXX
west sectorB cellB villageC XXXXXXXX
south sectorC cellC villageD XXXXXXXX
のタイプに固有の情報をより多くの列を持っている他の三つのデータセットがあります。それに含まれるデータ、すなわち流通、調査、フォローアップ。すべてのデータセットには、地区、セクター、セル、および村(同じ名前)の列があります。例えば:
> df_distr
v1 district sector cell village v2 v3 …
.. west sectorA cellA villageA .. .. …
.. west sectorA cellA villageB .. .. …
.. west sectorB cellB villageC .. .. …
.. south sectorC cellC villageD .. .. …
と
> df_survey
v1 v5 v6 district sector cell village v7 …
.. .. .. west sectorA cellA villageA .. ..
.. .. .. west sectorA cellA villageB .. ..
.. .. .. west sectorB cellB villageC .. ..
.. .. .. south sectorC cellC villageD .. ..
各データフレームは、異なる数の列を有し、位置変数がそれぞれにおいて同じ数字列に含まれていません。各地区 - セクター - セル - 村の組み合わせは、各村のコードと同様にユニークです。地区セクターのセルビレッジの一致に基づいて8桁の数値のロケーションIDを記録する3つのデータフレームのそれぞれにvillage_code列を追加しようとしています。理想的には、(リストに保存されるのではなく)オリジナルの各データフレームに列を追加することをお勧めします。このように、私は彼らが次のようになりたいのですが:
> df_distr
v1 district sector cell village v2 v3 … village_code
.. west sectorA cellA villageA .. .. … XXXXXXXX
.. west sectorA cellA villageB .. .. … XXXXXXXX
.. west sectorB cellB villageC .. .. … XXXXXXXX
.. south sectorC cellC villageD .. .. … XXXXXXXX
> df_survey
v1 v5 v6 district sector cell village v7 … village_code
.. .. .. west sectorA cellA villageA .. .. XXXXXXXX
.. .. .. west sectorA cellA villageB .. .. XXXXXXXX
.. .. .. west sectorB cellB villageC .. .. XXXXXXXX
.. .. .. south sectorC cellC villageD .. .. XXXXXXXX
私が正常なdf_distr <- left_join(df_distr, df_geo, by = c("district", "sector", "cell", "village"))
、この一つ一つ使用してコードを行うことができますが、私はより効率的に行う方法をしたいと思います。
私が正しく理解していれば、あなたはそれらのすべては 'village_code'を持っているように、参照データセットと結合すべてのデータセットを残したいです添付された? – useR
@useRはい、そうです – ktf