R/bmk.R

#' Mitteln von Radien eines Baumes
#'
#' Ein konsistentes Benennungsschema der Art XXXXANNE vorausgesetzt,
#' mit XXXX = Waldort, A = Baumart (Zahl), NN = Baumnummer und E =
#' Exposition, lassen sich die zusammengehörigen Einzelradien eines
#' Baumes zu einer arithmetischen Mittelkurven zusammenbringen.
#' @title Baummittelkurven
#' @param x ein data.frame mit Jahrringbreiten
#' @param n Anzahl gleicher Stellen im Identifier
#' @return ein data.frame mit Jahrringbreiten 
#' @export
bmk <- function(x, n = 7) {
  cat("Achtung: diese Funktion setzt eine fehlerfreie Benennung der Kurvenpaare voraus!\n")
  keycodes <- colnames(x)
  trees <- substr(keycodes, 1, n)
  trees.uniq <- unique(trees)
  n <- length(trees.uniq)
  cat(n, "Einzelbäume aus", length(keycodes),
      "Radienkurven identifiziert.\nKeycodes:", trees.uniq, "\n\n")
  dendro.matrix <- matrix(NA, ncol = n, nrow = nrow(x))
  rownames(dendro.matrix) <- rownames(x)
  colnames(dendro.matrix) <- trees.uniq
  for (i in 1:n) {
    pair <- which(trees == trees.uniq[i])
    if (length(pair) == 2) {
      treemean <- rowMeans(cbind(x[, pair[1]], x[, pair[2]]), na.rm = T)
    } else {
      treemean <- x[, pair[1]]
    }
    dendro.matrix[, i] <- treemean
  }
  dendro.matrix <- as.data.frame(dendro.matrix)
  class(dendro.matrix) <- c("dendro", "data.frame")
  dendro.matrix
}
cszang/garlic documentation built on May 14, 2019, 12:26 p.m.