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

如何在R中比较数据框X中同行ID是否属于数据框Y的同一组?

双ID组匹配判断问题

现有数据结构

数据框X

ID1  ID2
1     5
1     2
1     3
2     3
3     4

数据框Y

ID  GROUP
1    5
2    5     
3    6
4    6

需求

判断数据框X中每行的ID1与ID2是否在数据框Y中属于同一GROUP,期望输出结果如下:

ID1  ID2  SAME.GROUP
1     2    YES
2     3    NO
3     4    YES

解决方案

R语言(dplyr包)实现

  • 先将数据框X与Y关联,分别获取ID1和ID2对应的分组
  • 对比两个分组是否一致,生成结果列
library(dplyr)

# 构建示例数据
X <- data.frame(ID1 = c(1,1,1,2,3), ID2 = c(5,2,3,3,4))
Y <- data.frame(ID = c(1,2,3,4), GROUP = c(5,5,6,6))

# 关联ID1对应的分组
X <- X %>% left_join(Y, by = c("ID1" = "ID")) %>% rename(GROUP1 = GROUP)
# 关联ID2对应的分组
X <- X %>% left_join(Y, by = c("ID2" = "ID")) %>% rename(GROUP2 = GROUP)

# 判断是否同组并生成结果列,最后保留需要的字段
X <- X %>% 
  mutate(SAME.GROUP = ifelse(GROUP1 == GROUP2, "YES", "NO")) %>%
  select(ID1, ID2, SAME.GROUP)

# 输出结果
print(X)

Python语言(Pandas库)实现

  • 通过两次关联操作,分别获取ID1和ID2在Y中的分组
  • 逐行对比分组是否相同,生成结果列
import pandas as pd

# 构建示例数据
X = pd.DataFrame({"ID1": [1,1,1,2,3], "ID2": [5,2,3,3,4]})
Y = pd.DataFrame({"ID": [1,2,3,4], "GROUP": [5,5,6,6]})

# 关联ID1对应的分组
X = X.merge(Y, left_on="ID1", right_on="ID", how="left").rename(columns={"GROUP": "GROUP1"})
# 关联ID2对应的分组
X = X.merge(Y, left_on="ID2", right_on="ID", how="left").rename(columns={"GROUP": "GROUP2"})

# 判断是否同组并生成结果列,筛选目标字段
X["SAME.GROUP"] = X.apply(lambda row: "YES" if row["GROUP1"] == row["GROUP2"] else "NO", axis=1)
X = X[["ID1", "ID2", "SAME.GROUP"]]

# 输出结果
print(X)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:16:16