【问题标题】:R中的聚合函数
【发布时间】:2021-12-31 17:34:51
【问题描述】:

我有一个如下所示的表格

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

我想计算两个供应商通过值的百分比。类似于 SQL 中 group-by 和 case 的组合,我需要使用聚合函数。使用聚合创建自定义函数也是可以接受的。

我完全被难住了。 我能想到的只有

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)

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

Supplier       Pass%
A               XX%
B               XX%

【问题讨论】:

    标签: r group-by aggregate-functions


    【解决方案1】:

    如果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% 
    

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2018-08-07
      相关资源
      最近更新 更多