首页 > 解决方案 > 标记R中数据框之间的公共行

问题描述

我正在尝试标记较小数据帧常见的较大数据帧的行。

我已经研究过类似的主题(在 R 中查找两个数据帧之间的公共 ID 查找重复行的索引 查找所有重复行,包括“具有较小下标的元素”),但无法弄清楚如何使其工作如下方法:

df1<- data.frame(id = c(1, 2, 3, 4, NA, 5, 6, NA, NA, 7, 8))
df2<- data.frame(id = c(NA, 8, 3, NA, 1))

# Result

> df1
   id match
1   1  TRUE
2   2 FALSE
3   3  TRUE
4   4 FALSE
5  NA FALSE
6   5 FALSE
7   6 FALSE
8  NA FALSE
9  NA FALSE
10  7 FALSE
11  8  TRUE

标签: rdataframematch

解决方案


您可以使用%in%来检查匹配项并is.na避免与NA.

df1$match <- df1$id %in% df2$id & !is.na(df1$id)
df1

#   id match
#1   1  TRUE
#2   2 FALSE
#3   3  TRUE
#4   4 FALSE
#5  NA FALSE
#6   5 FALSE
#7   6 FALSE
#8  NA FALSE
#9  NA FALSE
#10  7 FALSE
#11  8  TRUE

推荐阅读