如何在向数据框中添加新列时进行分组

时间:2019-04-23 22:32:14

标签: r

我正在尝试整合从美国人口普查局API获取的数据框架。数据框是美国大都市地区的基尼系数。我对可用的每一年(2010年至2017年)在循环中运行api调用,并生成一个堆栈数据框。但是,我无法合并数据框,以使其每个都市圈只有一行,并且每年有一列具有正确的变量。

我当前得到的文件如下:

GEOID  |   NAME   |  VARIABLE  |   ESTIMATE |   MOE
____________________________________________________

01223     Metro1      B1059          .05       .02
01224     Metro2      B1059          .06       .01
01225     Metro3      B1059          .07       .03
01223     Metro1      B1059          .02       .02
01224     Metro2      B1059          .04       .04
01225     Metro3      B1059          .09       .09

我想让它看起来像这样:

GEOID  |   NAME   |  Year-1 |   MOE-1  |  Year-2  | MOE-2
_________________________________________________________________________

01223     Metro1      .05       .02       .02      .02
01224     Metro2      .06       .01       .04      .04
01225     Metro3      .07       .03       .09      .09

我尝试了各种版本的pipeline / group_by和aggregate,但是我似乎总是抛出错误或得到错误的结果。我有工作的代码如下。任何帮助将不胜感激!

{r, cache = TRUE}

require(censusapi)

year_block <- c(2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017)
census_api_key("xyz123")

metro_gini <- c()
for(i in 1:length(year_block)){
col_name <- paste0("Year-",i)
tmp_gini <- get_acs(geography = "metropolitan statistical area/micropolitan statistical area", table = "B19083", year = year_block[i])
metro_gini <- rbind(metro_gini, tmp_gini, col_name)
}

metro_gini <- subset(metro_gini, select = -c(variable)) %>%
  group_by(NAME)

head(metro_gini)

0 个答案:

没有答案