R 中的聚合函数

Aggregation function in R

我有一个 table 看起来像下面的东西

Supplier        Reliability
A                 Pass
A                 Fail
A                 Fail
B                 Pass
B                 Pass
A                 Pass

我想计算两个供应商的合格值百分比。类似于 SQL 中分组依据和大小写的组合,我需要使用聚合函数。使用聚合创建自定义函数也将是 acceptable.

我完全被难住了。 我能想到的就是

Supplier <- c('A','A','A','B','B','A')
Reliability<-c('Pass','Fail','Fail','Pass','Pass','Pass')
df<- data.frame(Supplier,Reliability)
agg<-aggregation(Reliability ~ GlassSupplier, data = df, FUN = length)

我想创建一个如下所示的 table。任何帮助将不胜感激。

Supplier       Pass%
A               XX%
B               XX%

如果dplyr可用,您可以试试

library(dplyr)

df %>%
  group_by(Supplier) %>%
  summarise(Pass = mean(Reliability == "Pass"))

  Supplier  Pass
  <chr>    <dbl>
1 A          0.5
2 B          1 

对于百分比格式结果,使用scales::percent

df %>%
  group_by(Supplier) %>%
  summarise(Pass = scales::percent(mean(Reliability == "Pass")))

  Supplier Pass 
  <chr>    <chr>
1 A        50%  
2 B        100%