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

如何基于两列识别数据框内部及跨数据框的重复行

找出两个数据框间共享的state-name组合行

以下是几种在R中实现该需求的实用方法:

方法1:使用基础函数merge()

merge()可以直接按指定列匹配两个数据框,提取共同行:

# 按state和name列匹配,保留两个数据框的所有列
common_rows <- merge(ppl, ppl_2, by = c("state", "name"))
print(common_rows)

执行后会输出两个数据框中state和name完全一致的行(也就是你要找的TN Ruby组合),两个数据框的id列会分别以id.x和id.y区分。

方法2:用dplyr的半连接筛选

如果你常用tidyverse工具链,dplyr的semi_join()是更简洁的选择,它只保留左侧数据框中在右侧数据框存在匹配的行:

library(dplyr)

# 从ppl中筛选出在ppl_2有相同state和name的行
match_ppl <- semi_join(ppl, ppl_2, by = c("state", "name"))
# 从ppl_2中筛选对应匹配行
match_ppl2 <- semi_join(ppl_2, ppl, by = c("state", "name"))

# 查看结果
print(match_ppl)
print(match_ppl2)

方法3:手动生成匹配键筛选

如果不想加载额外包,可以通过拼接列生成唯一标识来判断:

# 为每个数据框生成state+name的组合键
ppl$key <- paste(ppl$state, ppl$name, sep = "_")
ppl_2$key <- paste(ppl_2$state, ppl_2$name, sep = "_")

# 找出两个数据框共有的键
shared_keys <- intersect(ppl$key, ppl_2$key)

# 筛选出对应行
result_ppl <- subset(ppl, key %in% shared_keys)
result_ppl2 <- subset(ppl_2, key %in% shared_keys)

# 查看结果
print(result_ppl)
print(result_ppl2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:52:43