slice-methods {aqp} | R Documentation |
Slicing of SoilProfileCollection Objects
Description
A method for "slicing" of SoilProfileCollection objects into constant depth intervals. Now deprecated, see [dice()]
.
Usage
slice.fast(object, fm, top.down = TRUE, just.the.data = FALSE, strict = TRUE)
## S4 method for signature 'SoilProfileCollection'
slice(object, fm, top.down = TRUE, just.the.data = FALSE, strict = TRUE)
get.slice(h, id, top, bottom, vars, z, include = "top", strict = TRUE)
Arguments
object |
a SoilProfileCollection |
fm |
A formula: either |
top.down |
logical, slices are defined from the top-down: |
just.the.data |
Logical, return just the sliced data or a new |
strict |
Check for logic errors? Default: |
h |
Horizon data.frame |
id |
Profile ID |
top |
Top Depth Column Name |
bottom |
Bottom Depth Column Name |
vars |
Variables of Interest |
z |
Slice Depth (index). |
include |
Either |
Value
Either a new SoilProfileCollection
with data sliced according to fm
, or a data.frame
.
Details
By default, slices are defined from the top-down:
0:10
implies 0-11 depth units.
Author(s)
D.E. Beaudette
References
D.E. Beaudette, P. Roudier, A.T. O'Geen, Algorithms for quantitative pedology: A toolkit for soil scientists, Computers & Geosciences, Volume 52, March 2013, Pages 258-268, 10.1016/j.cageo.2012.10.020.
See Also
Examples
library(aqp)
# simulate some data, IDs are 1:20
d <- lapply(1:20, random_profile)
d <- do.call('rbind', d)
# init SoilProfileCollection object
depths(d) <- id ~ top + bottom
head(horizons(d))
# generate single slice at 10 cm
# output is a SoilProfileCollection object
s <- dice(d, fm = 10 ~ name + p1 + p2 + p3)
# generate single slice at 10 cm, output data.frame
s <- dice(d, 10 ~ name + p1 + p2 + p3, SPC = FALSE)
# generate integer slices from 0 - 26 cm
# note that slices are specified by default as "top-down"
# result is a SoilProfileCollection
# e.g. the lower depth will always by top + 1
s <- dice(d, fm = 0:25 ~ name + p1 + p2 + p3)
par(mar=c(0,1,0,1))
plotSPC(s)
# generate slices from 0 - 11 cm, for all variables
s <- dice(d, fm = 0:10 ~ .)
print(s)
# compute percent missing, for each slice,
# if all vars are missing, then NA is returned
d$p1[1:10] <- NA
s <- dice(d, 10 ~ ., SPC = FALSE, pctMissing = TRUE)
head(s)
## Not run:
##
## check sliced data
##
# test that mean of 1 cm slices property is equal to the
# hz-thickness weighted mean value of that property
data(sp1)
depths(sp1) <- id ~ top + bottom
# get the first profile
sp1.sub <- sp1[which(profile_id(sp1) == 'P009'), ]
# compute hz-thickness wt. mean
hz.wt.mean <- with(
horizons(sp1.sub),
sum((bottom - top) * prop) / sum(bottom - top)
)
# hopefully the same value, calculated via slice()
s <- dice(sp1.sub, fm = 0:max(sp1.sub) ~ prop)
hz.slice.mean <- mean(s$prop, na.rm = TRUE)
# they are the same
all.equal(hz.slice.mean, hz.wt.mean)
## End(Not run)