You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中基于两个data.frame的匹配值创建0/1匹配标识列

解决方案

方法1:使用内置%in%运算符(推荐)

直接判断df的x列元素是否存在于df2的x列中,将返回的布尔值转为整数即可得到0/1匹配标识,代码简洁执行效率高:

# 构造示例数据
df <- data.frame(x = c('x1','x2','x3','x4','x5'), y = c(1,2,3,4,5))
df2 <- data.frame(x = c('x3','x5'), y = c(3,5))

# 新增匹配标识列
df$match <- as.integer(df$x %in% df2$x)

执行后df就是你需要的newdf结构,输出结果如下:

x y match
1 x1 1     0
2 x2 2     0
3 x3 3     1
4 x4 4     0
5 x5 5     1

方法2:基于merge实现(兼容原有合并逻辑)

如果你需要沿用merge的操作逻辑,也可以通过左连接+缺省值补0实现:

# 给df2新增匹配标记列
df2$match <- 1
# 左连接合并,保留df的所有行
newdf <- merge(df, df2[, c("x", "match")], by = "x", all.x = TRUE)
# 未匹配到的行匹配值补0
newdf$match[is.na(newdf$match)] <- 0

内容的提问来源于stack exchange,提问作者MAJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:06:04