Ed_Gravy
Ed_Gravy

Reputation: 2033

R st_join return polygon with point attributes

Let's say I have the below data along with the code. The code returns point data but I want a polygon.

How can I do a spatial join such that it returns a polygon with both the point and polygon attributes? (Basically, the data will be matched/joined based on the points that fall with in the polygon)

Code + Data

library(sf)
library(tidyverse)

# Sample poly
poly =  st_read(system.file("shape/nc.shp", package="sf")) # included with sf package

# Sample points
pts = data.frame(name = c("Raleigh", "Greensboro", "Wilmington"),
                  x = c(-78.633333, -79.819444, -77.912222),
                  y = c(35.766667, 36.08, 34.223333)) %>% 
  st_as_sf(coords = c("x", "y"), crs = 4326) %>% 
  st_transform(st_crs(poly)) 

# Spatial join and output a polygon with the joined attributes, stuck here....
cities_with_counties = st_join(pts,
                                poly)

Upvotes: 2

Views: 1238

Answers (1)

Jindra Lacko
Jindra Lacko

Reputation: 8719

The geometry type returned by sf::st_join() is driven by the functions first argument.

Consider flipping the two - st_join(poly, pts).

The difference in output should be only in geometry type (and ordering of columns).

Upvotes: 2

Related Questions