r - 如何基于两列合并多个数据框?

标签 r dataframe merge gps dplyr

我有多个数据框,用于 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/

相关文章:

javascript - 按键名称合并数组对象

在 AWS 上运行 r 模型 - 多个 vCPU 是否像多核系统一样运行?

unit-testing - 你如何对 Python DataFrames 进行单元测试

python pandas通过评估表达式添加新的计算列(其他列的组合)

svn - 颠覆、融合

database - 在 OSX 上合并两个 .sqlite 文件

r - 使用偏度和峰度值自定义每个数值密度图的 x 轴标签

r - 更改 "R"中 nls.lm() 中的目标函数

mysql - 安装 RMysql RHEL 7.3 出错

python - 根据列中的值生成子数据框