与值匹配时返回值的R代码
我是R编程新手,想知道我是否能在一个我一直困扰的问题上得到一些帮助。 我有两个数据帧:第一个数据帧有三列:ID、sire.ID和Dam.ID与值匹配时返回值的R代码,r,R,我是R编程新手,想知道我是否能在一个我一直困扰的问题上得到一些帮助。 我有两个数据帧:第一个数据帧有三列:ID、sire.ID和Dam.ID df1 ID Sire.ID Dam.ID 1 A D G 2 B E H 3 C F I 第二个数据帧具有相同的三列,加上17列中17个标记的基因分型调用 Part of df2: ID Sire.ID Dam.ID marker1 marker2 marker3 marker
df1
ID Sire.ID Dam.ID
1 A D G
2 B E H
3 C F I
第二个数据帧具有相同的三列,加上17列中17个标记的基因分型调用
Part of df2:
ID Sire.ID Dam.ID marker1 marker2 marker3 marker4 marker5 marker6 marker7 marker8 marker9
1 D j K 12 21 11 11 12 22 11 22 11
2 G l m 12 21 11 11 12 22 11 22 11
3 H n o 12 21 11 11 12 22 11 22 11
下面是我在R中需要做的事情:如果第一个数据帧中的sire.ID存在于第二个数据帧中的ID列中,那么为相关子代返回第一个数据帧中的第二个数据帧中的ID及其调用,对于Dam.ID也是如此。简单地说,对于第一个数据帧中的每个ID,我希望在ID前面和两行中获得对其sire和dam的调用
Expected output: ID Sire.ID Dam.ID ID..4 Sire.ID..5 Dam.ID..6 marker1 marker2 marker3 marker4 marker5 marker6 marker7 1 A D G D j K 12 21 11 11 12 22 11 2 A D G G l m 12 21 11 11 12 22 11 3 B E H H n o 12 21 11 11 12 22 11 marker8 marker9 1 22 11 2 22 11 3 22 11
感谢您的帮助我不完全清楚您想做什么,但听起来您需要将两个数据帧内部连接起来。使用
sqldf
包,然后运行
sires <- sqldf('SELECT df1.ID, df2.marker1, df2.marker2, ... df2.marker17
FROM df1 INNER JOIN df2 ON df1."sire.ID" = df2."sire.ID"')
Dams <- sqldf('SELECT df1.ID, df2.marker1, df2.marker2, ... df2.marker17
FROM df1 INNER JOIN df2 ON df1."Dam.ID" = df2."Dam.ID"')
这将创建一个最终数据帧,该数据帧将组合来自父系和母系的数据,记录ID号和标记号。希望这有帮助。欢迎使用StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助您。非常感谢您的帮助。请注意,这可以完全用sql完成:
sqldf(“选择…联合选择…”)
。列名应该相同。或者如果不希望消除重复项,请使用union all
。
newdata <- rbind(sires, Dams)