我在一个数据框(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
答案 0 :(得分:0)
如果y
持有的信息不唯一,则可以使用:
all.data <- merge(unique(y[("Target","Year","Month","Day","Time")]), weather)
如果Month
在y
中的类型不同于weather
,并且Month
在numeric
中是weather
,请尝试:
y$Month <- as.numeric(y$Month)
,然后使用merge
。