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

R语言新手求助:基于匹配MRN从两个数据集创建新数据集

解决R语言中基于匹配MRN创建新数据集的问题

嘿,作为R语言新手,这个需求其实很常见,我来一步步帮你搞定!首先咱们先把你的示例数据还原成可运行的R代码,这样你可以直接跟着试:

# 构造第一个数据集(对应你说的第一个数据集)
df1 <- data.frame(
  MRN = c(222, 345, 555, 888, 675),
  Age = c(50, 64, 75, 56, 52),
  Status = c("likely", "likely", "unknown", "likely", "unknown")
)

# 构造第二个数据集(对应你说的第二个数据集)
df2 <- data.frame(
  MRN = c(222, 446, 555, 888, 678),
  Age = c(50, 35, 75, 56, 48),
  Status = c("likely", "unknown", "unknown", "likely", "unknown")
)

第一步:获取两个数据集中匹配的MRN

你已经用到了intersect()函数,这步是对的,咱们完善一下:

# 提取两个数据集共有的MRN
matched_mrn <- intersect(df1$MRN, df2$MRN)
# 查看结果,应该是222、555、888
print(matched_mrn)

第二步:基于匹配MRN创建新数据集

这里给你两种常用方法,选你顺手的就行:

方法1:用Base R(不用额外装包)

  • 从单个数据集中提取匹配的行:
# 从df1中提取匹配MRN的所有行
df1_matched <- subset(df1, MRN %in% matched_mrn)
# 从df2中提取匹配MRN的所有行
df2_matched <- subset(df2, MRN %in% matched_mrn)
  • 如果想把两个数据集的匹配行合并成一个(保留所有字段),用merge():
# 按MRN合并,给重复字段加后缀区分来源
combined_matched <- merge(df1, df2, by = "MRN", suffixes = c("_df1", "_df2"))

方法2:用dplyr包(更直观,适合新手)

如果你还没装dplyr,先安装并加载:

install.packages("dplyr")
library(dplyr)
  • 提取单个数据集的匹配行:
df1_matched <- df1 %>% filter(MRN %in% matched_mrn)
df2_matched <- df2 %>% filter(MRN %in% matched_mrn)
  • 一步到位合并匹配行(用inner_join自动只保留共有的MRN):
# inner_join会直接返回两个数据集中MRN匹配的行,无需先找intersect
combined_matched <- inner_join(df1, df2, by = "MRN")

最后:检查结果

你可以用这些命令查看生成的新数据集是否符合预期:

# 查看前几行
head(combined_matched)
# 打开可视化界面查看(RStudio可用)
View(combined_matched)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:03:41