我有多个数据框,用于 4 天内收集的数据。每个数据框看起来像这样(非常简单):
Lat Long PM
-33.9174 151.2263 8
-33.9175 151.2264 10
-33.9176 151.2265 9
-33.9177 151.2266 8
我想根据匹配的经度和纬度值合并多个数据帧,以平均出特定位置的所有“PM”值。最终结果将如下所示(2 月 13 日至 16 日):
Lat Long PM.13th Feb PM.14th Feb PM.15th Feb **Mean**
-33.9174 151.2263 8 9 11 9.33
-33.9175 151.2264 10 11 12 11
-33.9176 151.2265 9 14 13 12
-33.9177 151.2266 8 10 11 9.66
我知道合并 2 个数据框很容易:
df = merge(data1, data2, by.x = c("Lat", "Long"), by.y = c("Lat", "Long"))
但是如何根据匹配的经度和纬度值合并多个数据帧?
另外,有没有一种方法可以过滤数据,使其匹配彼此之间 0.001 纬度/经度值以内的数据? (目前我将纬度/经度数据四舍五入到小数点后 3 位,但它重复了我的数据)。
最佳答案
为了匹配,也许是来自 dplyr 的inner_join?
library(dplyr)
df1 <- data.frame(
lat = c(-33.9174, -33.9175, -33.9176, -33.9177, -33.9171),
long = c(151.2263, 151.2264, 151.2265, 151.2266, -140.54),
PM = c(8, 10, 9, 8, 55)
)
df2 <- data.frame(
lat = c(-33.9174, -33.9175, -33.9176, -33.9177, -31),
long = c(151.2263, 151.2264, 151.2265, 151.2266, 134),
PM = c(12, 15, 11, 3, 18)
)
library(dplyr)
inner_join(df1, df2, by = c("lat", "long"))
lat long PM.x PM.y
1 -33.9174 151.2263 8 12
2 -33.9175 151.2264 10 15
3 -33.9176 151.2265 9 11
4 -33.9177 151.2266 8 3
关于r - 如何基于两列合并多个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45242360/