【问题标题】:How to get a conditional proportion in a tibble in r如何在r中的小标题中获得条件比例
【发布时间】:2021-12-26 02:10:33
【问题描述】:

我有这个小标题

       host_id district                   availability_365
         <dbl>    <chr>                       <dbl>
     1    8573 Fatih                          280
     2    3725 Maltepe                        365
     3    1428 Fatih                          355
     4    6284 Fatih                          164
     5    3518 Esenyurt                       0
     6    8427 Esenyurt                       153
     7    4218 Fatih                          0
     8    5342 Kartal                         134
     9    4297 Pendik                         0
    10    9340 Maltepe                        243
    # … with 51,342 more rows

我想知道所有房间都在availability_365 == 0 上的房东(每个区)的比例有多高。如您所见,有 51352 行,但并非所有行中的主机都不同。实际上有 37572 个不同的 host_id。

我知道我可以使用命令 group_by(district) 将其分成 5 个不同的区域,但我不太确定如何解决该问题以找出有多少百分比的主机只有没有空房的房间.有人可以帮我吗?

【问题讨论】:

    标签: r tibble proportions


    【解决方案1】:

    在没有实际数据的情况下很难确保我的答案有效,但如果您愿意使用data.table,以下应该可以工作

    library(data.table)
    
    setDT(data)
    data[, .(no_avail = all(availability_365 == 0)), .(host_id, district)][, .(
      prop_no_avail = sum(no_avail) / .N
    ), .(district)]
    

    【讨论】:

    • 有机会解决dplyr 的问题吗?我之前从未真正使用过数据表和所有这些. 运算符
    • 对不起,我对dplyr 不太熟悉。我想你会在@Mohanasundaram 上获得更好的运气。
    【解决方案2】:

    dplyr 中使用summarise() 函数和group_by()

    library(dplyr)
    
    df %>% 
      group_by(district) %>%  
      summarise(Zero_Availability = sum(availability_365==0)/n())
    
    # A tibble: 5 x 2
      district Zero_Availability
      <chr>                <dbl>
    1 Esenyurt              0.5 
    2 Fatih                 0.25
    3 Kartal                0   
    4 Maltepe               0   
    5 Pendik                1   
    

    【讨论】:

    • 看来这行得通,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多