首页 > 解决方案 > 如果满足条件,则计算案例:按列分组

问题描述

我想获得符合特定条件的案例的数量和百分比,按另一列分组。

组是城市,条件是hour >= 6

例如

  city hour
    A    7
    A    6
    A    3
    B    2
    C    7

我想得到

 city hour>=6
    A 2
    B 1
    C 0

并且比每个百分比都基于城市的案例。

  city         hours >= 6 (%)
     A 0.6666667
     B 1.0000000
     C 0.0000000
City    ---  hour

我想我快到了

aggregate(hours, list(city), mean)

我得到了城市的小时平均值,但我不明白如何得到其他结果。

MG

标签: r

解决方案


使用包dplyr

数据:

df1<-data.frame(city=c(rep("A",3), "B","C"), hour = c(7,6,3,2,7))

代码:

df1 %>% group_by(city) %>% summarise(hourLHE6 = sum(hour <= 6), hourPCT = sum(hour <= 6)/length(hour))

结果:

## A tibble: 3 x 3
#  city  hourLHE6 hourPCT
#  <fct>    <int>   <dbl>
#1 A            2   0.667
#2 B            1   1    
#3 C            0   0    

推荐阅读