Learn R Programming

aqp (version 2.2)

aggregateColor: Summarize Soil Colors

Description

Summarize soil color data, weighted by occurrence and horizon thickness.

Usage

aggregateColor(
  x,
  groups = "genhz",
  col = "soil_color",
  k = NULL,
  profile_wt = NULL,
  mixingMethod = c("estimate", "exact")
)

Value

A list with the following components:

  • scaled.data: a list of colors and associated weights, one item for each generalized horizon label with at least one color specified in the source data

  • aggregate.data: a data.frame of weighted-mean colors, one row for each generalized horizon label with at least one color specified in the source data

Arguments

x

a SoilProfileCollection object

groups

the name of a horizon or site attribute used to group horizons, see examples

col

the name of a horizon-level attribute with soil color specified in hexadecimal (i.e. "#rrggbb")

k

single integer specifying the number of colors discretized via PAM (cluster::pam()), see details

profile_wt

the name of a site-level attribute used to modify weighting, e.g. area

mixingMethod

method used to estimate "aggregate" soil colors, see mixMunsell()

Author

D.E. Beaudette

Details

Weights are computed by: w_i = sqrt(sum(thickness_i)) * n_i where w_i is the weight associated with color i, thickness_i is the total thickness of all horizons associated with the color i, and n_i is the number of horizons associated with color i. Weights are computed within groups specified by groups.

See the related tutorial for additional examples.

See Also

generalize.hz(), aggregateColorPlot()

Examples

Run this code

# keep examples from using more than 2 cores
data.table::setDTthreads(Sys.getenv("OMP_THREAD_LIMIT", unset = 2))

# load some example data
data(sp1, package = 'aqp')

# upgrade to SoilProfileCollection and convert Munsell colors
sp1$soil_color <- with(sp1, munsell2rgb(hue, value, chroma))
depths(sp1) <- id ~ top + bottom
site(sp1) <- ~ group

# generalize horizon names
n <- c('O', 'A', 'B', 'C')
p <- c('O', 'A', 'B', 'C')
sp1$genhz <- generalize.hz(sp1$name, n, p)

# aggregate colors over horizon-level attribute: 'genhz'
a <- aggregateColor(sp1, groups = 'genhz', col = 'soil_color')

# check results
str(a)

# simple visualization
aggregateColorPlot(a)

Run the code above in your browser using DataLab