R - 将值y与z进行比较后返回值x

时间:2015-04-09 12:34:54

标签: r dataframe

我有两个数据框"测试"和" temp"看起来像这样:

试验:

    Persnr   Date AmountHolidays
1    55312 201101            0.0
2    55316 201101            3.0
3    55325 201101            0.0
4    76065 201101            0.0
5    71928 201101            1.0
6    72558 201101            0.5

温度:

     Date Temp
1  201101  4.8
2  201102  0.3
3  201103  8.5
4  201104  8.6
5  201105 14.8
6  201106 15.5
7  201107 17.5
8  201108 19.0
9  201109 13.9
10 201110 10.5

我想要的是比较两个数据帧中的日期并获取相应的Temp值(来自临时数据帧),这样我就可以将它存储到数据帧的新列中。测试&#34 ;.这就是最终结果应该是这样的:

    Persnr   Date AmountHolidays   Temperature
1    55312 201101            0.0   4.8
2    55316 201101            3.0   4.8
3    55325 201101            0.0   4.8
4    76065 201101            0.0   4.8
5    71928 201101            1.0   4.8
6    72558 201101            0.5   4.8
   ....
10   43532 201201            3.0   0.3
11   45324 201201            1.5   0.3

我希望我的问题足够明确。我认为应该有一个比较语句并选择" temp"的第二行。数据框。但我不确定如何创建这样的陈述。

这是我数据的结构:

> str(test)
'data.frame':   490 obs. of  5 variables:
 $ Persnr        : num  55312 55316 55325 76065 71928 ...
 $ Date          : num  201101 201101 201101 201101 201101 ...
 $ AmountHolidays: num  0 3 0 0 1 0.5 0 0.5 2 0 ...

> str(temp)
    'data.frame':   60 obs. of  2 variables:
     $ Date: int  201101 201102 201103 201104 201105 201106 201107 201108 201109 201110 ...
     $ Temp: num  4.8 0.3 8.5 8.6 14.8 15.5 17.5 19 13.9 10.5 ...

2 个答案:

答案 0 :(得分:2)

基础R您可以使用merge

merge(test, temp, by='Date', all.x=T)

或使用data.table包:

library(data.table)

setkey(setDT(test), Date)[setDT(temp)]

答案 1 :(得分:0)

您还可以使用left_join()

中的dplyr
library(dplyr)
left_join(test, temp)

#Joining by: "Date"
#  Persnr   Date AmountHolidays Temp
#1  55312 201101            0.0  4.8
#2  55316 201101            3.0  4.8
#3  55325 201101            0.0  4.8
#4  76065 201101            0.0  4.8
#5  71928 201101            1.0  4.8
#6  72558 201101            0.5  4.8