2016-04-27 74 views
1

我有兩個數據幀和數據幀的dput在下面給出:搜索匹配兩個數據幀

dput(DF1)

structure(list(observationtime = structure(c(0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L 
), format = "h:m:s", class = "times"), observationdate = structure(c(15309, 
15309, 15309, 15309, 15309, 15309, 15309, 15309, 15309, 15309, 
15309, 15309, 15309, 15309, 15309, 15309, 15309, 15309, 15309, 
15309), class = "Date"), screentemperature = c(9.1, 9.4, 6.8, 
5.7, 1.6, 6.3, 5.2, 4.7, 6.8, 8.7, 6.9, 9.6, 9.4, 9.5, 8.1, 7.7, 
7.9, 8.9, 6.6, 6.8), significantweathercode = c(8L, 7L, 8L, 9L, 
15L, 12L, 12L, 15L, 15L, 9L, 15L, 7L, 2L, 7L, 12L, 8L, 12L, 8L, 
8L, 12L), latitude = c(60.139, 58.954, 57.358, 58.214, 57.725, 
57.859, 57.257, 58.288, 56.867, 57.82, 57.206, 58.454, 57.6494, 
57.712, 57.077, 56.85, 57.206, 57.698, 56.497, 55.681), longitude = c(-1.183, 
-2.9, -7.397, -6.325, -4.896, -5.636, -5.809, -4.442, -4.708, 
-3.97, -3.827, -3.089, -3.5606, -3.322, -2.836, -2.27, -2.202, 
-2.121, -6.887, -6.256)), .Names = c("observationtime", "observationdate", 
"screentemperature", "significantweathercode", "latitude", "longitude" 
), row.names = c(1L, 3L, 4L, 5L, 6L, 7L, 8L, 10L, 11L, 12L, 13L, 
14L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L), class = "data.frame") 

dput(DF2)

structure(list(time = structure(c(0.0104166666666667, 0.0590277777777778 
), format = "h:m:s", class = "times"), data = structure(c(15309, 
15310), class = "Date"), latitude = c(53.674, 43.978), longitude = c(-1.222, 
-5.346)), .Names = c("time", "data", "latitude", "longitude"), row.names = c(NA, 
-2L), class = "data.frame") 

我正在嘗試使用df1的值從df2中提取溫度和有意義的weathercode。例如,來自df2的日期將與df1的日期完全匹配,但時間可能不相同,因此我需要識別15-30分鐘的閾值以找到最近的時間,並且同時我需要匹配座標,因爲它們可能不完全匹配,並且需要閾值才能找到最接近的匹配。步驟如下:

  • 比賽日期
  • 匹配的位置/ coordiantes,如果沒有精確匹配,找到最接近
  • 比賽的時候,如果沒有精確匹配,找到最接近的時間

溶液我是

  • 子集從DF1基於日期的數據
  • 選擇具有最小時間差的觀察和最小距離
  • 查找時間之間的差異,並協調

在現實中,數據是包含接近五十萬行的每個數據幀的大。我試圖找出一種有效的方法來嘗試做這樣的匹配。

建議將歡迎可能的解決方法。

+0

很大程度上取決於您在每個數據框中具有多少獨特位置。 – Thierry

+0

在df1中有170個獨特的位置,但在df1中有很多。我們正在談論數千人。 – syebill

回答

0

數據庫解決方案比純R解決方案更有效率。例如。具有PostGIS擴展的PostgreSQL數據庫將允許空間查詢。

+0

不幸的是,我們有使用R或Python的選項。有什麼建議麼? – syebill