【发布时间】:2018-08-08 11:45:15
【问题描述】:
我正在尝试使用内连接或左连接来连接两个 sf 数据帧。这些数据框内部都有几何列。我不断收到错误:
check_join(x, y) 中的错误:
y 应该是一个data.frame;对于空间连接,使用 st_joinFALSE
下面的可重现示例:
df1 <- data.frame(
var = c("a", "b", "c"),
lon1 = c(20,35,45),
lat1 = c(50,10,15)
) %>% st_as_sf(coords = c("lon1", "lat1"), dim = "XY") %>%
st_set_crs(4326)
df2 <- data.frame(
var = c("a", "b", "c"),
lon2 = c(15,25,35),
lat2 = c(5,10,15)
) %>% st_as_sf(coords = c("lon2", "lat2"), dim = "XY") %>%
st_set_crs(4326)
df <- inner_join(df1, df2, by = "var")
我不想放弃几何,因为我认为这可能会弄乱我的结果,但欢迎任何解决方案
【问题讨论】:
-
你的例子没有意义。 df1 和 df2 严格相同。要么你想加入属性表,然后你可以删除一个数据集的几何图形,要么你想按位置合并,然后你需要使用
st_join,如错误消息中所述。另一种可能性是在几何之间创建交集 (st_intersection)。这取决于您想要做什么(可能是第一个选项)