# guessGenHzLevels: Guess Appropriate Ordering for Generalized Horizon Labels In aqp: Algorithms for Quantitative Pedology

## Description

This function makes an (educated) guess at an appropriate set of levels for generalized horizon labels using the median of horizon depth mid-points.

## Usage

 `1` ```guessGenHzLevels(x, hz = "genhz") ```

## Arguments

 `x` a `SoilProfileCollection` object `hz` name of horizon-level attribute containing generalized horizon labels, see details

## Details

This function is useful when groups of horizons have been generalized via some method other than `generalize.hz`. For example, it may be useful to generalize horizons using labels derived from slice depths. The default sorting of these labels will not follow a logicial depth-wise sorting when converted to a factor. `guessGenHzLevels` does a good job of "guessing" the proper ordering of these labels based on median horizon depth mid-point.

## Value

a list:

 `levels` a vector of levels sorted by median horizon depth mid-point `median.depths` a vector of median horizon mid-points

## Author(s)

D.E. Beaudette

`generalize.hz`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28``` ```# load some example data data(sp1, package='aqp') # upgrade to SoilProfileCollection depths(sp1) <- id ~ top + bottom # generalize horizon names n <- c('O', 'A', 'B', 'C') p <- c('O', 'A', 'B', 'C') sp1\$genhz <- generalize.hz(sp1\$name, n, p) # note: levels are in the order in which originally defined: levels(sp1\$genhz) # generalize horizons by depth slice s <- slice(sp1, c(5, 10, 15, 25, 50, 100, 150) ~ .) s\$slice <- paste0(s\$top, ' cm') # not a factor levels(s\$slice) # the proper ordering of these new labels can be guessed from horizon depths guessGenHzLevels(s, 'slice') # convert to factor, and set proper order s\$slice <- factor(s\$slice, levels=guessGenHzLevels(s, 'slice')\$levels) # that is better levels(s\$slice) ```