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

如何将一组列与另一组列比较并生成匹配标记列?

R语言实现组间匹配标记变量

原始数据框

首先定义原始数据:

df <- data.frame(jan=c(10,7,1),
                 feb=c(20,9,2),
                 mar=c(30,6,3),
                 apr=c(5,5,4),
                 may=c(0,9,5),
                 jun=c(10,8,6)
)

输出结果:

jan feb mar apr may jun
1  10  20  30   5   0  10
2   7   9   6   5   9   8
3   1   2   3   4   5   6

需求说明

需要为数据框新增一列flag,规则为:

  • 将jan、feb、mar列为一组,apr、may、jun列为另一组
  • 逐行检查两组列中是否存在匹配值,存在则flag='Y',否则flag='N'

解决方案

方法一:Base R 实现

使用apply逐行处理,通过intersect判断两组是否有交集:

df$flag <- apply(df, 1, function(row) {
  group1 <- row[c("jan", "feb", "mar")]
  group2 <- row[c("apr", "may", "jun")]
  ifelse(length(intersect(group1, group2)) > 0, "Y", "N")
})

方法二:dplyr 实现

借助dplyr的行处理功能,用%in%判断是否存在匹配值:

library(dplyr)

df <- df %>%
  rowwise() %>%
  mutate(flag = ifelse(any(c(jan, feb, mar) %in% c(apr, may, jun)), "Y", "N")) %>%
  ungroup()

最终结果

执行上述任一方法后,数据框输出如下:

jan feb mar apr may jun flag
1  10  20  30   5   0  10    Y
2   7   9   6   5   9   8    Y
3   1   2   3   4   5   6    N

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:15:13