【发布时间】:2021-08-08 16:29:25
【问题描述】:
我有 2 个包含相似数据的数据框。我知道数据框 2 中的数据在整个数据框 1 中重复出现。我想从数据框 1 中提取所有行,这些行的 ID 与数据框 2 中的一个匹配。 例如,数据框 1 的长度约为 40,000 行,其中包含蛋白质和 ID 列:
Protein | ID|
# 4521 33PB
# 6743 67TR
# 6743 67TR
# 6743 63YH
# 5571 84RW
Dataframe 2 只有大约 10 行长,包含多列信息,但我只关心 ID 列。数据框 2:
Length | Family | ID
# 700 transferase 33PB
# 478 Cytochrome 67TR
# 341 Cytochrome 23FD
# 902 Methyl 00QA
# 554 p450 76LK
我正在尝试生成一个数据框,其中包含来自数据框 1 的 ID,其中包含在数据框 2 中找到的 ID,同时也为了维护其行中的相关蛋白质。例如,在这里我希望输出为:
Protein | ID
# 4521 33PB
# 6743 67TR
# 6743 67TR
我尝试使用 ID 列使用intersect(),但是这总是返回一个空数据帧,filter() 和使用%in% 时也是如此。我也尝试过if(){} 声明,但是这些声明并没有返回我的结果。我不确定是否有一个简单的函数可以使用,或者我是否应该设置一个while() 循环。不过我没有这方面的经验,所以不知道从哪里开始。
任何建议都将不胜感激,我已经坚持了几个小时。提前谢谢你。
【问题讨论】:
-
试试
df1 %>% filter(ID %in% unique(df2$ID)) -
@coffeinjunky 非常感谢,我试试看!
标签: r dataframe filter intersect