如何在 r 的 tibble 中获得条件比例

How to get a conditional proportion in a tibble in r

我有这个问题

       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_ids.

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

如果没有实际数据,很难确保我的答案有效,但如果您愿意使用 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 中使用 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