# aggregate.sf: aggregate an 'sf' object In sf: Simple Features for R

## Description

aggregate an `sf` object, possibly union-ing geometries

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10``` ```## S3 method for class 'sf' aggregate( x, by, FUN, ..., do_union = TRUE, simplify = TRUE, join = st_intersects ) ```

## Arguments

 `x` object of class sf `by` either a list of grouping vectors with length equal to `nrow(x)` (see aggregate), or an object of class `sf` or `sfc` with geometries that are used to generate groupings, using the binary predicate specified by the argument `join` `FUN` function passed on to aggregate, in case `ids` was specified and attributes need to be grouped `...` arguments passed on to `FUN` `do_union` logical; should grouped geometries be unioned using st_union? See details. `simplify` logical; see aggregate `join` logical spatial predicate function to use if `by` is a simple features object or geometry; see st_join

## Details

In case `do_union` is `FALSE`, `aggregate` will simply combine geometries using c.sfg. When polygons sharing a boundary are combined, this leads to geometries that are invalid; see https://github.com/r-spatial/sf/issues/681.

## Value

an `sf` object with aggregated attributes and geometries; additional grouping variables having the names of `names(ids)` or are named `Group.i` for `ids[[i]]`; see aggregate.

## Note

Does not work using the formula notation involving `~` defined in aggregate.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22``` ```m1 = cbind(c(0, 0, 1, 0), c(0, 1, 1, 0)) m2 = cbind(c(0, 1, 1, 0), c(0, 0, 1, 0)) pol = st_sfc(st_polygon(list(m1)), st_polygon(list(m2))) set.seed(1985) d = data.frame(matrix(runif(15), ncol = 3)) p = st_as_sf(x = d, coords = 1:2) plot(pol) plot(p, add = TRUE) (p_ag1 = aggregate(p, pol, mean)) plot(p_ag1) # geometry same as pol # works when x overlaps multiple objects in 'by': p_buff = st_buffer(p, 0.2) plot(p_buff, add = TRUE) (p_ag2 = aggregate(p_buff, pol, mean)) # increased mean of second # with non-matching features m3 = cbind(c(0, 0, -0.1, 0), c(0, 0.1, 0.1, 0)) pol = st_sfc(st_polygon(list(m3)), st_polygon(list(m1)), st_polygon(list(m2))) (p_ag3 = aggregate(p, pol, mean)) plot(p_ag3) # In case we need to pass an argument to the join function: (p_ag4 = aggregate(p, pol, mean, join = function(x, y) st_is_within_distance(x, y, dist = 0.3))) ```

### Example output   ```Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
Simple feature collection with 2 features and 1 field
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 0 ymin: 0 xmax: 1 ymax: 1
CRS:            NA
X3                       geometry
1 0.5951766 POLYGON ((0 0, 0 1, 1 1, 0 0))
2 0.2997908 POLYGON ((0 0, 1 0, 1 1, 0 0))
Simple feature collection with 2 features and 1 field
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 0 ymin: 0 xmax: 1 ymax: 1
CRS:            NA
X3                       geometry
1 0.5951766 POLYGON ((0 0, 0 1, 1 1, 0 0))
2 0.5958297 POLYGON ((0 0, 1 0, 1 1, 0 0))
Simple feature collection with 3 features and 1 field
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: -0.1 ymin: 0 xmax: 1 ymax: 1
CRS:            NA
X3                       geometry
1        NA POLYGON ((0 0, 0 0.1, -0.1 ...
2 0.5951766 POLYGON ((0 0, 0 1, 1 1, 0 0))
3 0.2997908 POLYGON ((0 0, 1 0, 1 1, 0 0))
Simple feature collection with 3 features and 1 field
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: -0.1 ymin: 0 xmax: 1 ymax: 1
CRS:            NA
X3                       geometry
1        NA POLYGON ((0 0, 0 0.1, -0.1 ...
2 0.5951766 POLYGON ((0 0, 0 1, 1 1, 0 0))
3 0.5999887 POLYGON ((0 0, 1 0, 1 1, 0 0))
```

sf documentation built on June 10, 2021, 1:06 a.m.