我有两个data.frames df.1
和df.2
,我会合并或以其他方式选择数据来创建新的data.frame。 df.1
包含有关每个人(ID
),抽样事件(Event
),Site
和样本编号(Sample
)的信息。对我而言,棘手的部分是Site
和每个Sample
- ID
配对的相应Event
不同。例如,F3-3有Site
" plum" Sample
" 1"和M6-3有Site
"梨" Sample
" 1"。
df.2
的{{1}}和Sample1
与Sample2
Sample
中的df.1
信息相对应ID
- Event
配对。
我希望匹配/合并这两个data.frames之间的信息。基本上,得到"字"来自Site
的{{1}}中与df.1
号匹配的Sample
。下面是一个示例(df.3
)。
每个ID
- Event
配对只有一个Site
和相应的Sample
(例如" Apple"将对应" 1& #34;不是" 1"和" 4")。我知道如果我只是匹配,我可以使用merge
,例如,Sample1
或Sample2
我不知道如何填充Site1
和{{} 1}}使用正确匹配的单词。
Site2
答案 0 :(得分:1)
两个merge
应该这样做:
first <- merge(df.2, unique(df.1[,3:5]), by.x=c("Sample1","Event"), by.y=c("Sample","Event"), all.x=TRUE)
second <- merge(first, unique(df.1[,3:5]),by.x=c("Sample2","Event"), by.y=c("Sample","Event"), all.x=TRUE)
print(second)
Sample2 Event Sample1 V1 V2 ID Sex Site.x Site.y
1 10 1 1 0.000 0.001 F1 F Apple Kiwi
2 2 1 1 0.120 0.107 F1 F Apple Grape
3 3 1 1 0.497 0.273 F1 F Apple Pear
4 3 3 2 0.001 0.107 M6 M Banana Mango
5 4 1 1 0.715 0.595 F1 F Apple Orange
6 4 3 2 0.000 0.273 M6 M Banana Guava
7 5 1 1 0.000 0.000 F1 F Apple Peach
8 5 3 2 0.829 0.595 M6 M Banana Kiwi
9 6 1 1 0.001 0.004 F1 F Apple Plum
10 7 1 1 0.000 0.000 F1 F Apple Banana
11 8 1 1 0.829 0.547 F1 F Apple Mango
12 9 1 1 0.000 0.001 F1 F Apple Guava