如何在R中left_join并重复将值连接到多个变量?

科里·彭伯顿

我在这里有些困惑,这不是正确的方法,或者我缺少了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)


谢谢你的帮助,

r2evans

dplyr'join verbs'by=参数可以接受多个列:

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 = c("Country", "Year"))
# # A tibble: 6 x 6
#   Region                    Country      Year Gender median_rate   gdp
#   <chr>                     <chr>       <dbl> <chr>        <dbl> <dbl>
# 1 Central and Southern Asia Afghanistan  2011 female       0.186   599
# 2 Central and Southern Asia Afghanistan  2011 male         0.454   599
# 3 Central and Southern Asia Afghanistan  2011 total        0.274   599
# 4 Central and Southern Asia Afghanistan  2018 female       0.221    NA
# 5 Central and Southern Asia Afghanistan  2018 male         0.504    NA
# 6 Central and Southern Asia Afghanistan  2018 total        0.367    NA

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在R中没有重复的Left_Join

我如何将两个或多个值/变量连接到laravel中的新变量

如何在R的for循环中包含left_join?

在 R 中,如何在多個數據幀上使用 left_join?

如何将多个统一变量但值不同的列表连接到一个矩阵中?

R merge 和 left_join 输出重复的行

将dplyr中的left_join与指定的合并变量一起使用

如何在不添加額外行的情況下使用 left_join R?

识别R中left_join中的同义词

将三个变量值连接到r中的单个值

在R中的left_join中使用粘贴

在R中,多次检查多个值,对是否满足条件求和,跟踪位置,导出数据并重复

如何在不同的DC中连接到多个Cassandra

如何将变量连接到替代文本中

将值连接到变量名

在LEFT JOIN中防止重复值

r dplyr::left_join 使用日期时间列不能正确连接

将组件存储到变量中并重复使用

VBA:如何在单个数组/字典中合并重复数据并返回值?

将多个阵列连接到一个没有重复的阵列中

如何在R中的数据框中合并重复的行

在哈希键重复的情况下,将值连接到perl脚本中的先前键中

如何根据行名合并/left_join多个数据框

如何在R中的数据框中选择并重复许多行

如何将多个剃刀文本框值连接到单个属性值

使用left_join()连接两个数据帧

如何将多个变量连接到一个向量

如何正确地将字符串文字连接到字符串变量并重新分配给变量

如何使用 dplyr group_by() 然后将一列的值连接到 R 中的单列中?