如何在 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
我有这个问题
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