在 R 中提取相交值

Extracting Intersect Values in R

我想知道是否有一种特定的方法可以让我从 QLD sf 对象中提取 sa3_code_2016 并将每个相应的值添加到测试数据帧中。

已解决,需要使用相同的 CRS 广告 QLD 分配积分并执行 st_join()

示例数据:

library(absmapsdata)
library(leaflet)
library(tidyverse)


QLD <- sa32016 %>%
  filter(state_name_2016 == "Queensland") %>% 
  dplyr::select(sa3_code_2016,geometry)

Points <- data.frame(Longitude = c(148.275355, 148.872268, 150.490145),
                  Latitude = c(-23.683148, -21.228157,-22.705135),
                  names = c("First", "Second", "Last"))

Points <- st_as_sf(Points, coords = c("Longitude", "Latitude")) %>% 
  st_set_crs(st_crs(QLD))
  
leaflet() %>% 
  addTiles() %>%
  addPolygons(data=QLD, 
              color = "#b3acc2",
              fillOpacity = 0.5) %>%
  addMarkers(data=Points)


library(sf)
Test <- st_join(Points, QLD)

您的错误源于过滤 sa32016,但您没有使用过滤后的数据,而是在选择过程中再次使用未过滤的版本。这会导致你的错误。通过将完整数据分配给 QLD 然后通过管道,您的过程工作正常。

library(absmapsdata)
library(leaflet)
library(tidyverse)

QLD <- sa32016 # note this step
QLD <- QLD %>%
  filter(state_name_2016 == "Queensland") %>% 
  select(sa3_code_2016,geometry)

name <- c("First", "Second", "Last")
lat <- c(-23.683148, -21.228157,-22.705135)
long <- c(148.275355, 148.872268, 150.490145 )
test <- cbind(name,lat,long)

leaflet() %>% 
  addTiles() %>%
  addPolygons(data=QLD, 
              color = "#b3acc2",
              fillOpacity = 0.5) %>%
  addMarkers(data=test,
             lng = long, 
             lat = lat)