我希望将数据从一个数据帧 (A) 选择性地集成到另一个 (B) 中。条件如下: 数据框共享两列(miRNA 和基因)。数据框 A 还包含带有该对值的列。

我想在数据框 B 中创建一个新列,该列取自 A 中的值列,如果该对(来自 A 中一行的相同 miRNA 和基因)在 B 中匹配,则包含一个值。如果一对在 B 中不匹配,用分数创建一个新行。

伪代码

#Initialize column in B that will house A value if first two columns match
B$A_Values <- 0

If A[,1:2] == B[,1:2]:
     Change initialized B$A_Value to A[VALUE] of row from A[,1:2]

If A[,1,2] is not in B[,1:2]:
     Add row in B[,1:2]
     Change initialized B$A_Value to A[Value] of row from A[,1:2]

数据帧的长度不相等,并且 B 中的项目在 A 中找不到,但我假设我的初始化会将它们的默认值设为 0。任何帮助将不胜感激。

干杯

最佳答案

这就是 merge 函数所做的。

AB <- merge(A, B, by = c("miRNA", "Gene"), all = TRUE)

或者如果 A 中的值不在 B 中并且您想删除这些值,请使用
AB <- merge(A, B, by = c("miRNA", "Gene"), all.y = TRUE)

关于r - R 中的选择性数据集成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30022925/

10-12 16:33
查看更多