【问题标题】:Selective Data Integration in RR中的选择性数据集成
【发布时间】:2015-05-04 05:03:03
【问题描述】:

我希望有选择地将来自一个数据框 (A) 的数据集成到另一个 (B) 中。条件如下:数据框共享两列(miRNA & Gene)。数据框 A 还包含具有该对值的列。

我想在数据框 B 中创建一个新列,该列取自 A 中的 Value 列,如果该对(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(A, B, by=c("miRNA", "Gene"), all.x=TRUE)?
  • 谢谢Khashaa,这是现场
  • 已经在这里给出了深入的解释:stackoverflow.com/questions/1299871/…
  • 谢谢阿加兹!!我在合并的研究中没有发现这个问题。我的研究重点是根据多列的内容选择性地合并项目,我什至没有考虑类似 SQL 的语句。这将是未来数据表集成的重要资源。干杯,科迪

标签: r merge dataframe


【解决方案1】:

这就是merge 函数的作用。

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

或者如果A 中有不在B 中的值,并且您想删除这些值,请使用

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

【讨论】:

  • 正确,这解决了问题并回答了后续问题。似乎先初始化列将无效。它将简单地创建另一个列,添加为 NA。谢谢!!
猜你喜欢
  • 2017-08-27
  • 2015-09-07
  • 2017-01-14
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
相关资源
最近更新 更多