如何在允许变量之间留有时间的同时合并2个数据集?

问题描述 投票:0回答:1

我无法正确合并两个数据集。理想情况下,对于每个国家,year.y变量应比year.x变量晚3年,以解决滞后效应。但是,当我尝试合并时,year.y似乎是随机分配的。另外,该代码还导致行数不必要地增加,因为该特定国家/地区每年仅需要将year.x与year.y配对,而只需要将其与单个年(year.x +3)配对。] >

> dput(head(corruption))
#Corruption dataset
structure(list(Jurisdiction_c = c("Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"), 
    year = c("X2001_c", "X2002_c", "X2003_c", "X2004_c", "X2005_c", 
    "X2006_c"), cpi = c(NA, NA, NA, NA, "2.5", NA)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
> dput(head(resource_wealth))
#resource wealth dataset
structure(list(Country.Name_r = c("Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"), 
    year = c("X1998_r", "X1999_r", "X2000_r", "X2001_r", "X2002_r", 
    "X2003_r"), resource_percentage = c(NA, NA, NA, NA, 1.11398250245278, 
    0.719357369114903)), row.names = c(NA, 6L), class = "data.frame")

这是我以前合并的行:

dataset_final <-  merge(x = resource_wealth, y = corruption, by.x = "Country.Name_r", by.y = "Jurisdiction_c", all.x = TRUE)
> dput(head(dataset_final))
structure(list(Country.Name_r = c("Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"), 
    year.x = c("X2005_r", "X2005_r", "X2005_r", "X2005_r", "X2005_r", 
    "X2005_r"), resource_percentage = c(0.38440433910658, 0.38440433910658, 
    0.38440433910658, 0.38440433910658, 0.38440433910658, 0.38440433910658
    ), year.y = c("X2012_c", "X2015_c", "X2007_c", "X2003_c", 
    "X2001_c", "X2002_c"), cpi = c("8", "11", "1.8", NA, NA, 
    NA)), row.names = c(NA, 6L), class = "data.frame")

这是期望的结果:

1    Afghanistan X1998_r           <NA>         X2001_c <NA>
2    Afghanistan X1999_r           <NA>         X2002_c <NA>
3    Afghanistan X2000_r           <NA>         X2003_c <NA>
4    Afghanistan X2001_r           <NA>         X2004_c <NA>
5    Afghanistan X2002_r           1.113983e+00 X2005_c 2.5
6    Afghanistan X2003_r           7.193574e-01 X2006_c <NA>

我无法正确合并两个数据集。理想情况下,对于每个国家,year.y变量应比year.x变量晚3年,以解决滞后效应。但是,当我尝试...

r merge
1个回答
0
投票

由于只剩下一个键,它将创建具有所有年份值的所有匹配观测值。一种方法是从列中提取年份值,并仅保留year_yyear_x + 3的年份。

© www.soinside.com 2019 - 2024. All rights reserved.