在一个向量中填充值,以另一个向量中的值为条件

时间:2012-11-19 12:04:43

标签: r

我有两个具有两个不同维度的数据框:

1:

head(x)
   Year GDP_deflator
1  1825           NA
2  1826           NA
3  1827           NA
4  1828           NA
5  1829           NA
6  1829           NA
7  1830           NA
8  1830           NA
9  1830           NA
10 1831           NA

dim(x)
  1733    2

2:

head(dataDef)
   Year GDP_deflator
1  1825     1.788002
2  1826     1.884325
3  1827     2.016997
4  1828     1.802907
5  1829     1.781999
6  1830     1.866437
7  1831     1.960316
8  1832     2.029601
9  1833     1.880957
10 1834     1.845750

dim(dataDef)
 101   2

我想将dataDef$GDP_deflator列中的值替换为x$GDP_deflator列上的Year列。换句话说,我希望答案是:

head (x)

   Year GDP_deflator
1  1825           1.788002
2  1826           1.884325
3  1827           2.016997
4  1828           1.802907
5  1829           1.781999
6  1829           1.781999
7  1830           1.866437
8  1830           1.866437
9  1830           1.866437
10 1831           1.960316

因此repeating年(即1830年)获得相同的值1.866437。有什么建议吗?

最好的问候

2 个答案:

答案 0 :(得分:0)

您希望merge两个data.frames。这是一个多对一的合并。

答案 1 :(得分:0)

一种可能性是使用match

x$GDP_deflator <- dataDef$GDP_deflator[match(x$Year, dataDef$Year)]