【发布时间】:2019-11-20 20:09:29
【问题描述】:
我在这里混淆了一些东西,要么这不是正确的方法,要么我错过了 left_join 的一部分:
我希望按国家和年份加入“gdp”列,并在所有三个“性别”类别中重复该值,以使同一年的所有三个性别都具有相同的关联 gdp .
这是我现在拥有的:
library(tidyverse)
table_1 <- tribble(~"Region",~"Country",~"Year", ~"Gender", ~"median_rate",
"Central and Southern Asia", "Afghanistan", 2011, "female", 0.186,
"Central and Southern Asia","Afghanistan", 2011, "male", 0.454,
"Central and Southern Asia", "Afghanistan", 2011, "total", 0.274,
"Central and Southern Asia", "Afghanistan", 2018, "female", 0.221,
"Central and Southern Asia", "Afghanistan" , 2018, "male", 0.504,
"Central and Southern Asia", "Afghanistan", 2018, "total", 0.367)
table_2 <- tribble(~"Country", ~"gdp", ~"Year",
"Afghanistan", 551., 2010,
"Afghanistan", 599.,2011,
"Afghanistan", 649., 2012,
"Afghanistan", 648., 2013,
"Afghanistan", 625., 2014,
"Afghanistan", 590., 2015,
"Afghanistan", 550., 2016,
"Afghanistan", 550., 2017)
table_1 %>% left_join(table_2, by = "Country")
# A tibble: 48 x 7
Region Country Year.x Gender median_rate gdp Year.y
<chr> <chr> <dbl> <chr> <dbl> <dbl> <dbl>
1 Central and Southern Asia Afghanistan 2011 female 0.186 551 2010
2 Central and Southern Asia Afghanistan 2011 female 0.186 599 2011
3 Central and Southern Asia Afghanistan 2011 female 0.186 649 2012
4 Central and Southern Asia Afghanistan 2011 female 0.186 648 2013
5 Central and Southern Asia Afghanistan 2011 female 0.186 625 2014
6 Central and Southern Asia Afghanistan 2011 female 0.186 590 2015
7 Central and Southern Asia Afghanistan 2011 female 0.186 550 2016
8 Central and Southern Asia Afghanistan 2011 female 0.186 550 2017
9 Central and Southern Asia Afghanistan 2011 male 0.454 551 2010
10 Central and Southern Asia Afghanistan 2011 male 0.454 599 2011
# ... with 38 more rows
预期的输出将是这样的,将表 2 中的 gdp 列加入,但仅针对每个匹配的年份,(例如,表 1 中只有 2011 年和 2018 年的数据,因此应该只匹配这些年份)
tribble(~"Region",~"Country",~"Year", ~"Gender", ~"median_rate",~"gdp",
"Central and Southern Asia", "Afghanistan", 2011, "female",0.186, 550,
"Central and Southern Asia","Afghanistan", 2011, "male",0.454,550,
"Central and Southern Asia", "Afghanistan", 2011, "total",0.274,550,
"Central and Southern Asia", "Afghanistan", 2018, "female", 0.221,590,
"Central and Southern Asia", "Afghanistan" , 2018, "male", 0.504, 590,
"Central and Southern Asia", "Afghanistan", 2018, "total", 0.367, 590)
感谢您的帮助,
【问题讨论】:
-
你能显示你的预期输出吗
-
“按国家和年份加入“gdp”列”建议您应该使用
%>% left_join(table_2, by = c("Country", "Year"))。此外,查看您的输出,您有字段Year.x和Year.y,提醒您两边都有Year。 -
@r2evans 就是这样。谢谢。不知道您可以在“by”参数中传递两个变量。如果您想提交,请提交。