我希望将数据从一个数据帧 (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/