私は2つのデータフレームを持っています:
df1 <- data.frame( pt = c("pt1153", "pt1153", "pt1153", "pt1154", "pt1155", "pt1156"),
phys = c("p10", "p616", "p850", "p899", "p709", "p892"))
df2<- data.frame( sender = c("p10", "p10", "p100", "p100", "p102", "p103"),
s.type = c(11,11,21,21,11, 21),
receiver = c("p616", "p850", "p235", "p388", "p596", "p696"),
r.type = c(21,31,11,11,31,31),
shared.pts = c(1,1,1,1,1,1) )
で終わりたい
sender s.type receiver r.type shared.pts pts
p10 11 p616 21 1 p1153
p10 11 p850 31 1 p1153
しかし、私はそれを行う方法を理解できません。マージしてから ddply を使用しようとしましたが、うまくいきませんでした。私もapplyで遊んでみましたが、どの関数を作るべきかわかりませんでした。
DFS をマージするだけでは十分ではありません。df1の列「pts」のメンバーを共有するそれぞれに基づいてそれらをマージする必要があります
問題を再現できないようですが、マージを使用すると、次のようになります。
p.sender.id p.receiver.type Source.total.pts p.receiver.id p.sender.type Target.total.pts shared.pts patient.id
1 p10 21 6 p616 11 3 1 pt2439
2 p10 21 6 p616 11 3 1 pt1870
3 p10 21 6 p616 11 3 1 pt1153
4 p10 21 6 p616 11 3 1 pt64
5 p10 21 6 p616 11 3 1 pt1626
6 p10 21 6 p616 11 3 1 pt941
7 p10 31 6 p850 11 10 1 pt2439
8 p10 31 6 p850 11 10 1 pt1870
9 p10 31 6 p850 11 10 1 pt1153
10 p10 31 6 p850 11 10 1 pt64
p10 と p616 が 1 つのポイントのみを共有する場合。pt1153