R语言如何使用Aggregation function计算各供应商Pass合格率
实现方案
你原来的代码存在两处错误:
- 聚合函数名拼写错误,应为
aggregate而非aggregation - 分组字段名错误,你的数据集里分组列是
Supplier,不存在GlassSupplier字段
以下是符合要求的实现,用标准聚合函数aggregate搭配自定义统计逻辑完成分组计算:
# 你已有的数据构造代码 Supplier <- c('A','A','A','B','B','A') Reliability<-c('Pass','Fail','Fail','Pass','Pass','Pass') df<- data.frame(Supplier,Reliability) # 自定义聚合用统计函数,计算单组内Pass的占比 calc_pass_pct <- function(reliability_col) { pass_num <- sum(reliability_col == "Pass") total_num <- length(reliability_col) # 输出为百分比格式,可根据需要调整保留小数位数 paste0(round(pass_num / total_num * 100, 0), "%") } # 按Supplier分组聚合计算 result <- aggregate(Reliability ~ Supplier, data = df, FUN = calc_pass_pct) # 修改列名匹配你需要的输出格式 colnames(result) <- c("Supplier", "Pass%")
运行后得到的result就是你要的结果:
| Supplier | Pass% |
|---|---|
| A | 75% |
| B | 100% |
内容的提问来源于stack exchange,提问作者Bradley Brewer
相关产品推荐
相关产品推荐

