我有两个数据框"测试"和" 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 ...
答案 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