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

时间:2018-11-04 15:48:12

标签: r

我是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行,每个邮政编码只有一个比率。

1 个答案:

答案 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