An error occurred while loading the file. Please try again.
-
Georges Kunstler authoredaff63c1c
### MERGE BCI DATA
rm(list = ls())
source("./R/format.function.R")
source("./R/FUN.TRY.R")
library(reshape)
############# READ DATA read individuals tree data Requires careful formatting of 7 census
############ datasets The raw data is such that, once a tree dies in census X, then it no
########## longer exists in census X+1, X+2 etc...
data.bci1 <- read.table("./data/raw/DataBCI/census1/PlotsDataReport.txt", header = TRUE,
stringsAsFactors = FALSE, sep = "\t")
data.bci1$Date1 <- data.bci1$Date; data.bci1$Date <- NULL
data.bci1$DBH1 <- data.bci1$DBH; data.bci1$DBH <- NULL
big.bci <- NULL
for (k in 2:7) {
new.directory <- paste("./data/raw/DataBCI/census", k, "/PlotsDataReport.txt",
sep = "")
data.bci2 <- read.table(new.directory, header = TRUE, stringsAsFactors = FALSE,
sep = "\t");
if (!is.null(big.bci)) {
sub.bci <- merge(data.bci1[, c("Latin","Quadrat","Census","gx","gy","TreeID","Tag","Date1","DBH1")], data.frame(TreeID = data.bci2[["TreeID"]],
DBH2 = data.bci2[["DBH"]], Date2 = data.bci2[["Date"]], dead = as.numeric(data.bci2[["Status"]] ==
"dead"),stringsAsFactors=F), sort = T, by = "TreeID") ## Uses the Date1 as the census number
big.bci <- rbind(big.bci, sub.bci)
}
if (is.null(big.bci)) {
big.bci <- merge(data.bci1[, c("Latin","Quadrat","Census","gx","gy","TreeID","Tag","Date1","DBH1")], data.frame(TreeID = data.bci2[["TreeID"]],
DBH2 = data.bci2[["DBH"]], Date2 = data.bci2[["Date"]], dead = as.numeric(data.bci2[["Status"]] ==
"dead"),stringsAsFactors=F), sort = T, by = "TreeID")
}
data.bci1 <- data.bci2
data.bci1$Date1 <- data.bci1$Date; data.bci1$Date <- NULL
data.bci1$DBH1 <- data.bci1$DBH; data.bci1$DBH <- NULL
cat("Census", k, "now included\n")
print(summary(big.bci$DBH1)); print(summary(big.bci$DBH2))
}
rm(data.bci1, data.bci2, sub.bci)
big.bci <- big.bci[order(big.bci$TreeID), ]
data.bci <- big.bci
rm(big.bci)
### read species names
species.clean <- read.table("./data/raw/DataBCI/TaxonomyDataReport.txt", stringsAsFactors = FALSE,
header = T, sep = "\t")
species.clean$Latin_name <- paste(species.clean[["Genus"]],
species.clean[["species"]],sep=" ")
## ## Try to relate SpeciesID in species.clean species names in data.bci
## unique(data.bci$Latin) %in% species.clean$Latin_name
###################################### MASSAGE TRAIT DATA Use HEIGHT_AVG, LMALAM_AVD, SEED_DRY
data.trait <- read.csv("./data/raw/DataBCI/BCITRAITS_20101220.csv", stringsAsFactors = FALSE,
header = T)
data.trait$Latin <- apply(data.trait[, 1:2], 1, paste, collapse = " ")
data.trait <- data.trait[,c("GENUS.","SP.","Latin","SEED_DRY","LMALAM_AVD","LMALAM_SED","LMALAM_ND","SG100C_AVG","SG100C_SEM","SG100C_N","HEIGHT_AVG","HEIGHT_SEM","HEIGHT_N")]
data.trait$sp <- data.trait[["SP."]]
data.trait[["SP."]] <- NULL
data.trait$Leaf.N.mean <- NA
data.trait$Leaf.N.sd <- NA
data.trait$Seed.mass.mean <- data.trait$SEED_DRY*1000
data.trait$SEED_DRY <- NULL
data.trait$Seed.mass.sd <- NA
data.trait$SLA.mean <- 1/data.trait$LMALAM_AVD
data.trait$SLA.mean <- data.trait$SLA.mean*1000 ## Conversion from g m^-2 to mm2 mg^-1
data.trait$SLA.sd <- 1/data.trait$LMALAM_SED
data.trait$SLA.sd <- data.trait$SLA.sd*1000 ## Conversion from g m^-2 to mm2 mg^-1
data.trait$SLA.sd <- data.trait$SLA.sd*sqrt(data.trait$LMALAM_ND) ## conversion of SEM in SD
data.trait$LMALAM_AVD <- data.trait$LMALAM_SED <- data.trait$LMALAM_ND <- NULL
data.trait$Wood.density.mean <- data.trait$SG100C_AVG;
data.trait$Wood.density.sd <- data.trait$SG100C_SEM*sqrt(data.trait$SG100C_N) ## conversion of SEM in SD
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
data.trait$SG100C_AVG <- data.trait$SG100C_N <- data.trait$SG100C_SEM <- NULL
data.trait$Max.height.mean <- (data.trait$HEIGHT_AVG)
data.trait$Max.height.sd <- (data.trait$HEIGHT_SEM*sqrt(data.trait$HEIGHT_N))
data.trait$HEIGHT_SEM <- data.trait$HEIGHT_N <- data.trait$HEIGHT_AVG <- NULL
data.trait$Latin_name <- sub(" ","_",data.trait$Latin)
## THIS NEW FUNCTION IS WORKING
fun.extract.format.sp.traits.NOT.TRY(sp=unique(data.bci$Latin), Latin_name=unique(data.bci$Latin), data=data.trait,name.match.traits="Latin")
########################################## FORMAT INDIVIDUAL TREE DATA
data.bci <- data.bci[order(data.bci[["TreeID"]]),]
data.bci$Date1 <- as.Date(data.bci$Date1)
data.bci$Date2 <- as.Date(data.bci$Date2)
# data.bci$yr1 <- format(strptime(data.bci$Date1, format = '%Y-%m-%d'),'%Y')
# data.bci$yr2 <- format(strptime(data.bci$Date2, format = '%Y-%m-%d'),'%Y')
data.bci$year <- as.numeric(difftime(data.bci$Date2, data.bci$Date1, units = "weeks")/52) ## Not rounded
data.bci$obs.id <- apply(data.bci[,c("TreeID","Census")],1,paste,collapse="_")
data.bci$tree.id <- data.bci$TreeID
data.bci$x <- data.bci$gx
data.bci$y <- data.bci$gy
## change unit and names of variables to be the same in all data for the tree
data.bci$G <- 10 * (data.bci$DBH1 - data.bci$DBH1)/data.bci$year ## diameter growth in mm per year - BASED ON UNROUNDED YEARS
data.bci$D <- data.bci[["DBH1"]]/10
data.bci$subplot <- data.bci[["Quadrat"]] ##
data.bci$plot <- rep(1,nrow(data.bci))
data.bci$htot <- NA
data.bci$sp.name <- data.bci$Latin
data.bci$sp <- sub(" ","_",data.bci$sp.name)
data.bci$sp.name <- data.bci$sp
data.bci$census <- data.bci$Census
###################### ECOREGION bci has only 1 eco-region
###################### PERCENT DEAD
perc.dead <- tapply(data.bci[["dead"]], INDEX = data.bci[["plot"]],
FUN = function.perc.dead2)
data.bci <- merge(data.bci, data.frame(plot = names(perc.dead), perc.dead = perc.dead),
by = "plot", sort = FALSE)
## vec.abio.var.names <- NA ## MISSING
vec.basic.var <- c("tree.id","obs.id", "sp", "sp.name", "plot", "D", "G", "dead", "year", "htot",
"x", "y", "perc.dead","census")
data.tree <- subset(data.bci, select = c(vec.basic.var))
############################################## COMPUTE MATRIX OF COMPETITION INDEX WITH SUM OF BA PER SPECIES IN EACH PLOT in
############################################## m^2/ha without the target species
data.tree <- subset(data.tree,subset=!is.na(data.tree[["D"]]))
data.tree <- subset(data.tree,subset=data.tree[["D"]]>5) ### select only tree below 5cm of dbh to start
### species as factor because number
data.tree[['sp']] <- factor(data.tree[['sp']])
Rlim <- 15 # set size of neighborhood for competition index
## for each census compute competition index
## FOR CENSUS 6 only to start
data.tree1 <- data.tree[data.tree$census==6,]
fun.data.per.bigplot(data=data.tree1,name.site="BCI",data.TRAITS=data.trait,Rlim=15,xy.name=c("x","y"))