【问题标题】:R - Ratio of a dichotomus variable per ZIP code, grouped by ZIP code into a new dfR - 每个邮政编码的二分变量的比率,按邮政编码分组到新的 df
【发布时间】:2018-11-04 15:48:12
【问题描述】:

我是 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:我如何创建一个仅作为邮政编码分组的数据框,其中一个比例的结果是之前(或直接)在表中创建的结果。 100 行邮政编码,每个邮政编码只有一个比率。

【问题讨论】:

  • 您介意分享您预期输出的前几行吗?
  • @harro-cyranka 感谢您的关注。基本上我想要“比率”和新数据框中的“1”列。划掉“0”列。我希望这是我的形状文件地图的基础。然后颜色将是结果比率。喜欢:邮政编码 125,比率 0,47。

标签: r


【解决方案1】:

这是我使用 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

【讨论】:

  • 非常感谢!像魅力一样与我真正的 df 一起工作。
猜你喜欢
  • 2011-04-11
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 2013-12-10
  • 2012-01-10
相关资源
最近更新 更多