【发布时间】:2019-08-19 23:08:47
【问题描述】:
您好,我是 R 中 tidyverse 的新手,正在尝试做一个项目
我的数据框(ab):
Year Zip Total_Population Median_Income City State
1 2014 00601 18088 10833 Adjuntas PR
2 2014 00602 40859 16353 Aguada PR
3 2015 00603 53162 16323 Aguadilla PR
4 2015 00606 6415 14138 Maricao PR
5 2016 00610 28805 17265 Anasco PR
6 2016 00612 66251 17752 Arecibo PR
我使用 mutate 来创建基于 zip 的人口收入比:
dmg_ratio <- ab %>% filter(Year %in% c(2014,2015,2016,2017)) %>%
group_by(Zip) %>%
mutate(Poptoincomeratio = Total_Population/Median_Income)
dmg_ratio
输出代表:
Year Zip Total_Population Median_Income City State Poptoincomeratio
2014 ZCTA5 00601 18088 10833 Adjuntas PR 1.67
2014 ZCTA5 00602 40859 16353 Aguada PR 2.50
2015 ZCTA5 00601 53162 16323 Adjuntas PR 3.26
我想找出每个邮政编码从 2014 年到 2016 年新创建的突变(Poptoincomeratio)的差异,以了解这些年来人口收入比是否有任何变化。 我怎么能做到这一点?
【问题讨论】:
-
如何获得预期的输出?看起来它只是
dmg_ratio的前 3 行? -
@RonakShah 基本上我想要的输出是 2014 年邮政编码 00601 的比率为 1.67,而 2015 年相同的邮政编码比率为 3.26。我想有所作为。为了更清晰,我重新编辑了我的输出表达式
-
类似
dmg_ratio %>% group_by(Zip) %>% arrange(Year) %>% mutate(difference = Poptoincomeratio - lag(Poptoincomeratio))使用dplyr? -
@RonakShah 出于某种原因,这会返回 NA,尽管这似乎是 OP 的预期输出。
-
@NelsonGon 它会因为在共享的示例中每个
Zip只有一行,所以没有什么可减去的,但我假设这只是 OP 共享的样本数据,他们的实际数据有很多每个Zip都有很多行。