我有两个数据集,火灾数据集很大,全局临时数据集比它小很多。
所以我想通过DISCOVERY_DATE = date,Latitude =纬度和经度=经度匹配两个数据集。现在我知道他们中的大多数都不会匹配,但我希望尽可能接近匹配。我认为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
答案 0 :(得分:2)
我建议您根据时间距离(即减去日期)和空间距离(基于纬度和长度)的加权组合提出适当的距离度量。根据应用程序的空间和时间接近度的相对重要性确定权重。然后使用该距离度量计算包含从第一数据集中的每个点到第二数据集中的每个点的距离的矩阵。最后,找到每行和/或列中的最小距离,以选择一个数据集中最接近另一个数据集中的点的数据点。您可能希望丢弃任何距离大于某个阈值的对。