R - 每个邮政编码的二分变量的比率,按邮政编码分组为新的df

问题描述 投票:0回答:1

我是R的新手并且遇到了麻烦。

我有一个数据框,其中包含一个城市的主题,他们分别居住的邮政编码及其结果(0,1)。

id <- 1:5000
zip <- sample(100:200, 5000, replace = TRUE)
outcome <- rbinom(5000, 1, 0.23)
df <- data.frame(id, outcome, zip)

abs <- table(df$zip, df$outcome)
ratio <- round(prop.table(abs, 1), 2)

使用“abs”,我得到每个结果和ZIP代码的每个结果的绝对数字。

使用“比率”,我得到每个ZIP-Code的每个结果的百分比,并且两个结果列的总和将为1。

我的问题是,A:我如何只根据邮政编码将其中一个结果的百分比纳入表中,

和B:我如何创建一个仅作为ZIP代码分组的数据框,其中一个比例是在表之前(或直接)创建的。 100行邮政编码,每个邮政编码只有一个比例。

r
1个回答
0
投票

这是我使用tidyverse的答案。基本上,我们可以通过zip对观察进行分组,然后通过取均值进行总结。由于唯一可能的结果是0和1,因此均值给出了1的比例。

library(tidyverse)
set.seed(1) ##I set a seed, just to ensure reproducibility 
id <- 1:5000
zip <- sample(100:200, 5000, replace = TRUE)
outcome <- rbinom(5000, 1, 0.23)
df <- data.frame(id, outcome, zip) %>% as_tibble()


new_df <- df %>% group_by(zip) %>% summarise(ratio = mean(outcome))
new_df
© www.soinside.com 2019 - 2024. All rights reserved.