我是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”,我可以获得每个结果和邮政编码的每个结果的绝对数。
使用“比率”,可以获得每个邮政编码的每个结果的百分比,并且两个结果列的总和为1。
我的问题是,A:我如何只将其中一个结果的百分比按邮政编码编入表格,
和B:如何创建仅以ZIP码分组的数据框,且该数据框的比例是之前(或直接)在表中创建的结果的一个比例。邮政编码为100行,每个邮政编码只有一个比率。
答案 0 :(得分:0)
这是我使用tidyverse的答案。基本上,我们可以按邮政编码对观察结果进行分组,然后通过取平均值进行总结。由于唯一可能的结果是0和1,因此平均值给出了1s的比例。
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