Как я могу найти разницу в населении по годам и почтовому индексу с помощью dplyr? - PullRequest
0 голосов
/ 16 марта 2019

Я работаю с данными ACS, и я использовал пакет dplyr для фильтрации моих данных к этому. Тем не менее, я пытаюсь использовать mutate в dplyr, чтобы найти увеличение и уменьшение общей численности населения с 2013 по 2016 год на основе почтового индекса. например, я хочу создать новый столбец, который найдет для почтового индекса 43001, какова разница в общей численности населения с 2013 по 2016 год

Мой вклад:

filterdacs_D1 <- mutate(filename,difference1 =$zip$total_population[total_population]-$zip$total_population2017)

Но это неверно, так как я хочу разницу между 2016 и 2014 годами для каждого почтового индекса.

Фрейм данных:

     Year        Zip      Total_Population Median_Income             City    
1    2013 ZCTA5 43001             2475         87333               Alexandria    OH
2    2013 ZCTA5 43002             2753         83873                  Amlin           OH
3    2014 ZCTA5 43003             2366         46691                 Ashley         OH
4    2014 ZCTA5 43001            24625         70809              Blacklick        OH
5    2014 ZCTA5 43005              155         43810            Bladensburg    OH
6    2015 ZCTA5 43006              705         45673             Brinkhaven    OH
7    2015 ZCTA5 43001             2430         28422           Buckeye Lake    OH
8    2016 ZCTA5 43009             2036         62188                  Cable    OH
9    2016 ZCTA5 43010              386         34625                Catawba    OH
10   2016 ZCTA5 43001             7733        66548             Centerburg    OH

Как мне это сделать в R?

1 Ответ

2 голосов
/ 16 марта 2019

Существует множество способов помочь подобной проблеме, но я бы, вероятно, атаковал ее так:

library(tidyverse)

zips <- tibble::tribble(
    ~Year,          ~Zip, ~Total_Population, ~Median_Income,                 ~City,
     2013, "ZCTA5 43001",              2475,          87333,    "Alexandria    OH",
     2013, "ZCTA5 43002",              2753,          83873,  "Amlin           OH",
     2014, "ZCTA5 43003",              2366,          46691,   "Ashley         OH",
     2014, "ZCTA5 43001",             24625,          70809, "Blacklick        OH",
     2014, "ZCTA5 43005",               155,          43810,   "Bladensburg    OH",
     2015, "ZCTA5 43006",               705,          45673,    "Brinkhaven    OH",
     2015, "ZCTA5 43001",              2430,          28422,  "Buckeye Lake    OH",
     2016, "ZCTA5 43009",              2036,          62188,         "Cable    OH",
     2016, "ZCTA5 43010",               386,          34625,       "Catawba    OH",
     2016, "ZCTA5 43001",              7733,          66548,    "Centerburg    OH"
    )

diff <-  zips %>% dplyr::filter(Year %in% c(2013,2016)) %>% 
    spread(Year,Total_Population) %>% group_by(Zip) %>%
    summarise(`Total2013` = sum(`2013`, na.rm = TRUE),
              `Total2016` = sum(`2016`, na.rm = TRUE)) %>% 
    mutate(Difference = Total2013- Total2016)

diff

Вы должны разбить свою проблему на более мелкие кусочки, а не пытаться думать, что есть только одна функция, которая может выполнить то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...