私は2つのデータフレームを持っています:
df1
Column1 Column2
A id1
B id2
C id3
B id2
D id4
A id1
C id3
df2
Column1 Column2 Column3
X m1 m2
A m3 m4
A m3 m4
Y n1 n2
A m3 m4
Z p1 p2
X m1 m2
の列 1 の行がの場合、の列 2に基づいて列 2 と 3 を選択的に結合する必要があるという条件に基づいてマージdf1
したいdf2
df1
A
df2
df1
したがって、最終的な df1 は次のようになります。
df1
Column1 Column2.1 Column1.2 Column2.2 Column3.2
A id1 id1 m3 m4
B id2
C id3
B id2
D id4
A id1 id1 m3 m4
C id3
これまでのところ、df1 の列 1 に「A」を含む行を具体的に抽出することでこれを管理してきました。次に、 for ループ内でマージを適用して、 の両方の列を取得しましたdf2
。と の間の条件付きマージを具体的に実行するのに役立つ if ループを持つ可能性はありdf1
ますdf2
か?
df1
との構造は次のdf2
とおりです。
df1 <- structure(list(Column1 = structure(c(1L, 2L, 3L, 2L, 4L, 1L,
3L), .Label = c("A", "B", "C", "D"), class = "factor"), Column2 = structure(c(1L,
2L, 3L, 2L, 4L, 1L, 3L), .Label = c("id1", "id2", "id3", "id4"
), class = "factor")), .Names = c("Column1", "Column2"), class = "data.frame", row.names = c(NA,
-7L))
df2 <- structure(list(Column1 = structure(c(2L, 1L, 1L, 3L, 1L, 4L,
2L), .Label = c("A", "X", "Y", "Z"), class = "factor"), Column2 = structure(c(1L,
2L, 2L, 3L, 2L, 4L, 1L), .Label = c("m1", "m3", "n1", "p1"), class = "factor"),
Column3 = structure(c(1L, 2L, 2L, 3L, 2L, 4L, 1L), .Label = c("m2",
"m4", "n2", "p2"), class = "factor")), .Names = c("Column1",
"Column2", "Column3"), class = "data.frame", row.names = c(NA,
-7L))