50% off: Unlimited data and AI learning.
State of Data and AI Literacy Report 2025

ClimProjDiags (version 0.1.3)

WeightedMean: Calculate spatial area-weighted average of multidimensional arrays

Description

This function computes a spatial area-weighted average of n-dimensional arrays being possible to select a region and to add a mask to be applied when computing the average.

Usage

WeightedMean(data, lon, lat, region = NULL, mask = NULL, londim = NULL,
  latdim = NULL)

Value

An array, matrix or vector containig the area-weighted average with the same dimensions as data, except for the spatial longitude and latitude dimensions, which disappear.

Arguments

data

An array with minimum two dimensions of latitude and longitude.

lon

Numeric vector of longitude locations of the cell centers of the grid of data. This vector must be the same length as the longitude dimension in the parameter data.

lat

Numeric vector of latitude locations of the cell centers of the grid of data. This vector must be the same length as the latitude dimension in the parameter data.

region

A vector of length four indicating the minimum longitude, the maximum longitude, the minimum latitude and the maximum latitude of the region to be averaged.

mask

A matrix with the same spatial dimensions of data. It can contain either a) TRUE where the value at that position is to be accounted for and FALSE where not, or b) numeric values, where those greater or equal to 0.5 are to be accounted for, and those smaller are not. Attention: if the longitude and latitude dimensions of the data and mask coincide in length, the user must ensure the dimensions of the mask are in the same order as the dimensions in the array provided in the parameter data.

londim

An integer number indicating the position of the longitude dimension in the data object.

latdim

An integer number indicating the position of the latitude dimension in the data object.

Examples

Run this code
##Example synthetic data 1:
data <- 1:(2 * 3 * 4 * 5)
dim(data) <- c(lon = 2, lat = 3, time = 4, model = 5)
lat <- c(1, 10, 20)
lon <- c(1, 10)

a <- WeightedMean(data = data, lon = lon, lat = lat, region = NULL, 
                 mask = NULL, londim = 1, latdim = 2)
str(a)

mask <- c(0, 1, 0, 1, 0, 1)
dim(mask) <- c(lon = 2, lat = 3)
a <- WeightedMean(data = data, lon = lon, lat = lat, region = NULL, 
                 mask = mask, londim = 1, latdim = 2)
str(a)

region <- c(1, 10, 1, 10)
a <- WeightedMean(data = data, lon = lon, lat = lat, region = region, 
                 mask = mask, londim = 1, latdim = 2)
str(a)

##Example synthetic data:
data <- 1:(2 * 3 * 4)
dim(data) <- c(lon = 2, lat = 3, time=4)
lat <- c(1, 10, 20)
lon <- c(1, 10)

a <- WeightedMean(data = data, lon = lon, lat = lat, region = NULL,
                 mask = NULL, londim = 1, latdim = 2)
str(a)

Run the code above in your browser using DataLab