Learn R Programming

spatialEco (version 2.0-2)

wt.centroid: Weighted centroid

Description

Creates centroid of [x,y] coordinates with optional weights field

Usage

wt.centroid(x, p = NULL, spatial = TRUE)

Value

An x,y coordinate or sf POINT object representing the weighted or unweighted coordinate centroid

Arguments

x

sf POINT class object

p

Weights column in x

spatial

(TRUE/FALSE) Output sf POINT object

Author

Jeffrey S. Evans <jeffrey_evans@tnc.org>

Details

The weighted centroid is calculated as: [Xw]=[X]*[p], [Yw]=[Y]*[p], [sXw]=SUM[Xw], [sYw]=SUM[Yw], [sP]=SUM[p] wX=[sXw]/[sP], wY=[sYw]/[sP] where; X=X coordinate(S), Y=Y coordinate(S), p=WEIGHT

Examples

Run this code
p = c("sf", "sp")
if(any(!unlist(lapply(p, requireNamespace, quietly=TRUE)))) { 
  m = which(!unlist(lapply(p, requireNamespace, quietly=TRUE)))
  message("Can't run examples, please install ", paste(p[m], collapse = " "))
} else {
invisible(lapply(p, require, character.only=TRUE))

data(meuse, package = "sp")
meuse <- st_as_sf(meuse, coords = c("x", "y"), crs = 28992, 
                  agr = "constant")

wt.copper <- wt.centroid(meuse, p='copper') 
wt.zinc <- wt.centroid(meuse,  p='zinc') 

plot(st_geometry(meuse), pch=20, cex=0.75, 
     main='Weighted centroid(s)')
  plot(st_geometry(wt.copper), pch=19, col='red', 
       cex=1.5, add=TRUE)  
  plot(st_geometry(wt.zinc), pch=19, col='blue', 
       cex=1.5, add=TRUE)
legend('topleft', legend=c('all','copper', 'zinc'), 
       pch=c(20,19,19),col=c('black','red','blue'))
}

Run the code above in your browser using DataLab