基于值的计数需求:统计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
相关产品推荐
相关产品推荐

