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

如何使用R的tidyverse/dplyr计算dataframe两列数值差异及占比

R实现代码(基于tidyverse)

首先加载依赖包:

library(tidyverse)

场景1:按唯一数值统计(统计不同数值的归属)

适合需求中统计「不同数值」的计数和占比的场景:

# 提取两列的唯一值
aug_unique <- unique(`Chun analysis`$Aug)
sept_unique <- unique(`Chun analysis`$Sept)

# 计算三类数值集合
common_val <- intersect(aug_unique, sept_unique) # 两列共有
aug_only <- setdiff(aug_unique, sept_unique) # Aug列独有
sept_only <- setdiff(sept_unique, aug_unique) # Sept列独有

# 汇总统计结果
total_unique <- length(unique(c(aug_unique, sept_unique)))
stat_res <- tibble(
  类别 = c("Aug列独有", "Sept列独有", "两列共有"),
  数值个数 = c(length(aug_only), length(sept_only), length(common_val)),
  占比 = scales::percent(数值个数 / total_unique, accuracy = 0.01)
)

# 打印结果
print(stat_res)

基于你提供的样例数据,输出结果为:

类别数值个数占比
Aug列独有1058.82%
Sept列独有15.88%
两列共有635.29%

场景2:按行统计(统计每行数据的归属)

如果需求是统计行数的计数和占比,可以用以下代码:

row_stat_res <- `Chun analysis` %>%
  mutate(
    类别 = case_when(
      Aug %in% sept_unique & !(Sept %in% aug_unique) ~ "Sept列独有",
      !(Aug %in% sept_unique) & Sept %in% aug_unique ~ "Aug列独有",
      TRUE ~ "两列共有"
    )
  ) %>%
  count(类别, name = "行数") %>%
  mutate(占比 = scales::percent(行数 / sum(行数), accuracy = 0.01))

# 打印结果
print(row_stat_res)

注意:数据集名Chun analysis包含空格,R中引用时必须用反引号包裹,否则会报语法错误。

内容的提问来源于stack exchange,提问作者Yomi.blaze93

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:18:01