fill.internal.NA {dplR} | R Documentation |
Fill Internal NA
Description
This function fills internal NA
values (i.e., those with numeric data
above and below a small data gap) in each column of a
data.frame
such as a data set of ring widths as produced by
read.rwl
.
Usage
fill.internal.NA(x, fill = c("Mean", "Spline", "Linear"))
Arguments
x |
a |
fill |
a |
Details
There are occasionally data gaps within a tree-ring series. Some of
the functions in dplR will fail
when an internal NA
is encountered (e.g. caps
). This
function fills internal NA
values with either a given numeric value
(e.g., 0
) or through crude imputation. The latter can be calculated as
the mean of the series (fill="Mean"
) or calculated by fitting a cubic spline
(fill="Spline"
) using the spline
function or calculated
by linear approximation (fill="Linear"
) using the function
approx
.
Editorial: Having internal NA
in a tree-ring series is
often bad practice and filling those values should be done with
caution. For instance, some users code missing rings as NA
instead of 0
. And missing values (i.e., NA
) are
sometimes present in maximum latewood density data when the rings are
small. A common, but not recommended, practice is to leave stretches
of NA
values in places where it has been impossible to
accurately measure rings (perhaps because of a break in the core). It
is often better to treat that core as two separate series (e.g., "01A"
and "01B" rather than have internal NA
values. As with all
processing, the analyst should make a decision based on their
experience with the wood and not rely on software to make a choice for
them!
Value
A data.frame
with colnames(x)
and
rownames(x)
. Internal NA
s
filled as above.
Author(s)
Andy Bunn. Patched and improved by Mikko Korpela.
See Also
Examples
library(graphics)
library(stats)
foo <- data.frame(x1=c(rnorm(5), NA, NA, rnorm(3)),
x2=c(rnorm(10)),
x3=c(NA, NA, rnorm(3), NA, rnorm(4)),
x4=c(NA, NA, rnorm(3), NA, rnorm(3), NA),
x5=c(NA, NA, rnorm(8)),
x6=c(NA, rnorm(9)),
x7=c(NA, rnorm(5), NA, rnorm(3)),
x8=c(rnorm(8), NA, NA),
x9=c(rnorm(5), NA, rnorm(3), NA))
row.names(foo) <- 1901:1910
class(foo) <- c("rwl","data.frame")
fill.internal.NA(foo, fill=0)
bar <- fill.internal.NA(foo, fill="Spline")
baz <- fill.internal.NA(foo, fill="Linear")
## note differences in method "Spline" vs. "Linear"
yrs <- time(foo)
plot(yrs, foo$x7, type="b", lwd=3)
lines(yrs, bar$x7, col="red", lwd=2)
lines(yrs, baz$x7, col="green", lwd=1)