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

基于值的计数需求:统计Coins数值区间的行占比

嘿,我来帮你解决这个Coins字段的占比统计问题!针对你给出的需求和样本数据,我整理了两种常用的R实现方法,还有对应的计算结果:

需求分析

你需要对数据集的Coins字段完成三类占比统计:

  • Coins值大于20的行占总数据的比例
  • Coins值等于20的行占总数据的比例
  • Coins值小于20的行占总数据的比例
样本数据构造

首先把你给出的样本数据转换成R可处理的数据框:

sample_data <- data.frame(
  Plan = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"),
  Year = c(2018, 2014, 2012, 2017, 2018, 2018, 2018, 2016, 2014, 2017),
  Coins = c(20, 15, 30, 30, 5, 20, 20, 20, 10, 20),
  Copay = c(10, 5, 0, 10, 10, 0, 0, 10, 3, 7)
)
方法一:基础R实现

如果不想加载额外包,用基础R就能轻松搞定:

# 统计总行数
total_rows <- nrow(sample_data)

# 分别统计三类行数
gt20_count <- sum(sample_data$Coins > 20)
eq20_count <- sum(sample_data$Coins == 20)
lt20_count <- sum(sample_data$Coins < 20)

# 计算占比并输出结果
cat(
  "Coins > 20 占比:", paste0(round((gt20_count/total_rows)*100, 2), "%"), "\n",
  "Coins = 20 占比:", paste0(round((eq20_count/total_rows)*100, 2), "%"), "\n",
  "Coins < 20 占比:", paste0(round((lt20_count/total_rows)*100, 2), "%"), "\n",
  sep = ""
)
方法二:tidyverse(dplyr)实现

如果习惯用tidyverse风格的代码,这种方式更直观易读,适合处理大型数据集:

library(dplyr)

result <- sample_data %>%
  # 给每行标记所属类别
  mutate(coins_category = case_when(
    Coins > 20 ~ "Coins > 20",
    Coins == 20 ~ "Coins = 20",
    TRUE ~ "Coins < 20"  # 剩余情况自动归为小于20
  )) %>%
  # 按类别计数
  count(coins_category) %>%
  # 计算占比
  mutate(percentage = (n / sum(n)) * 100)

# 打印结果
print(result)
样本数据的统计结果

运行上面的代码后,针对你给出的10条样本数据,得到的具体结果是:

  • Coins > 20:20%(对应样本中的C、D两行)
  • Coins = 20:50%(对应样本中的A、F、G、H、J五行)
  • Coins < 20:30%(对应样本中的B、E、I三行)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:57:56