merge.data.BCI.R 6.48 KiB
### 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"))