合并两个数据框,但仅匹配条目

时间:2019-10-03 12:24:20

标签: r dataframe merge

我在一个数据框(y)中有位置数据,而在另一数据框(天气)中有天气数据。

我想将天气数据与y数据框合并,但仅合并在y中具有相应行的时间和日期。

我尝试过合并和rbind,或者我得到一个空的数据框,或者当应该有大约7000个时出现一个具有数百万个条目的数据框

names(y)
 [1] "ID"         "Year"       "Month"      "Day"        "Time"       "Source"    
 [7] "Source.Lat" "Source.Lon" "Target"     "Target.Lat" "Target.Lon"

names(weather)
 [1] "Target"     "Year"       "Month"      "Day"        "Time"          
 [6] "Temp"       "Dew_Point_Temp" "Humidity"   "Wind_Direction" "Wind_Speed"    
[11] "Pressure"   "Humidex" 

all.data <- merge(y, weather, by = c("Target","Year","Month","Day","Time"))

我只想在“目标”,“年”,“月”,“天”和“时间”匹配时在y中填充天气数据,而忽略其余部分。

样本数据(y):

    ID      Year  Month Day Time    Target      Lat     Lon 
1   35624   2019    06  19  11:00   Kejimkujik  46.3236 -114.1319
3   35651   2019    06  19  14:00   CNSC 2019   58.7378 -93.8194
5   35620   2019    06  19  14:00   CNSC 2019   58.7378 -93.8194
7   35624   2019    06  20  04:00   CNSC 2019   58.7378 -93.8194
9   35651   2019    06  20  05:00   CNSC 2019   58.7378 -93.8194

样本数据(天气)

    Target      Year Month Day Time    Temp DP  Hum WD  WS  Pressure
1   Kejimkujik  2019    6   1   0:00    6.5 6.1 97  32  3   99.51   
2   Kejimkujik  2019    6   1   1:00    5.9 5.6 98  30  2   99.50   
3   Kejimkujik  2019    6   1   2:00    4.9 4.7 98  31  3   99.52   
4   Kejimkujik  2019    6   1   3:00    4.4 4.3 99  32  3   99.52   
5   Kejimkujik  2019    6   1   4:00    4.1 4.0 99  24  3   99.57   

1 个答案:

答案 0 :(得分:0)

如果y持有的信息不唯一,则可以使用:

all.data <- merge(unique(y[("Target","Year","Month","Day","Time")]), weather)

如果Monthy中的类型不同于weather,并且Monthnumeric中是weather,请尝试:

y$Month <- as.numeric(y$Month)

,然后使用merge

相关问题