【发布时间】:2017-10-23 05:06:29
【问题描述】:
我有两个数据集,fire 数据集很大,而 global temp 数据集比它小很多。
所以我想通过 DISCOVERY_DATE = 日期、纬度 = 纬度和经度 = 经度来匹配这两个数据集。现在我知道他们中的大多数都不会匹配,但我正在寻找尽可能接近的匹配。我认为fuzzyjoin 将是解决此问题的好方法,但是如何将这三个都匹配。
我认为问题可能是我似乎无法为此找到一个好的功能。
tempFire <- fuzzy_join(fires, Temps, multi_by = c("DISCOVERY_DATE" = "date", "LONGITUDE" = "Longitude", "LATITUDE" = "Latitude"), multi_match_fun = D, mode = "full")
数据
> head(z, n =10)
fires.LATITUDE fires.LONGITUDE fires.DISCOVERY_DATE
1 40.03694 -121.0058 1970-01-29
2 38.93306 -120.4044 1970-01-29
3 38.98417 -120.7356 1970-01-29
4 38.55917 -119.9133 1970-01-29
5 38.55917 -119.9331 1970-01-29
6 38.63528 -120.1036 1970-01-29
7 38.68833 -120.1533 1970-01-29
8 40.96806 -122.4339 1970-01-29
9 41.23361 -122.2833 1970-01-29
10 38.54833 -120.1492 1970-01-29
> head(b, n = 10)
Temps.Latitude Temps.Longitude Temps.date
1 32.95 -100.53 1992-01-01
2 32.95 -100.53 1992-02-01
3 32.95 -100.53 1992-03-01
4 32.95 -100.53 1992-04-01
5 32.95 -100.53 1992-05-01
6 32.95 -100.53 1992-06-01
7 32.95 -100.53 1992-07-01
8 32.95 -100.53 1992-08-01
9 32.95 -100.53 1992-09-01
10 32.95 -100.53 1992-10-01
【问题讨论】:
-
你看过fuzzyjoin 吗?我认为它不会在一次连接中对不同类型进行“多重匹配”,但也许您可以例如首先对日期进行间隔连接,然后对坐标进行地理连接。
-
是的,我只是不确定什么功能可以完成所有这些工作。
-
@ClintonWoods 我对地理数据没有经验,请您解释一下如何将
32.95N(从b)转换为40.03694中的40.03694等数字格式z? -
抱歉,我无法从您的帖子中看出:您在这里使用数据框吗?如果是这样,也许
data.table对非 equi 连接的支持就是您要寻找的。如果您的数据已经在sp对象中,您可以考虑单独使用data插槽,然后在合并后重建对象。 -
@PoGibas 我将 lat 和 lon 更改为相同的格式。