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

如何在R中比较不同长度数据框的列、匹配值并计算匹配率

数据框匹配对齐与匹配占比计算方案

原始数据

首先定义并查看两个数据框:

# 定义df1
df1 <- data.frame(
  col1 = 1:7,
  col2 = c("a", "b", "c", "d", "e", "f", "g")
)

# 定义df2
df2 <- data.frame(
  col1 = c(1,2,3,4,10),
  col2 = c("a","c","f", "g", "z")
)

查看数据内容:

df1
#>   col1 col2
#> 1    1    a
#> 2    2    b
#> 3    3    c
#> 4    4    d
#> 5    5    e
#> 6    6    f
#> 7    7    g

df2
#>   col1 col2
#> 1    1    a
#> 2    2    c
#> 3    3    f
#> 4    4    g
#> 5   10    z

1. 按col2匹配对齐数据框

使用merge()函数,通过all.x = TRUE保留df1的所有行,df2中无匹配的内容自动填充NA,之后调整列顺序与命名:

# 合并数据框,保留df1全部行
merged_df <- merge(df1, df2, by = "col2", all.x = TRUE)
# 调整列顺序并重命名
merged_df <- merged_df[, c("col1.x", "col2", "col1.y", "col2.y")]
colnames(merged_df) <- c("col1", "col2", "col1.1", "col2.1")

# 查看结果
merged_df
#>   col1 col2 col1.1 col2.1
#> 1    1    a      1      a
#> 2    2    b     NA   <NA>
#> 3    3    c      2      c
#> 4    4    d     NA   <NA>
#> 5    5    e     NA   <NA>
#> 6    6    f      3      f
#> 7    7    g      4      g

2. 计算匹配百分比

用%in%判断df1的col2值是否存在于df2的col2中,再通过均值计算匹配占比:

# 计算匹配比例并转为百分比
match_percent <- mean(df1$col2 %in% df2$col2) * 100
# 输出结果(保留两位小数)
cat("df1的col2列匹配占比:", round(match_percent, 2), "%\n")
#> df1的col2列匹配占比: 57.14 %

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:35:33