diff --git a/merge.data.FUSHAN.R b/merge.data.FUSHAN.R new file mode 100644 index 0000000000000000000000000000000000000000..4f9c3b2238f0495c8af9fb84e3024e8c6ac11db8 --- /dev/null +++ b/merge.data.FUSHAN.R @@ -0,0 +1,97 @@ +### MERGE Fushan DATA +### Edited by FH +rm(list = ls()); source("./R/format.function.R"); library(reshape) + +######################### +## READ DATA +#################### +### read individuals tree data +data.fushan <- load("./data/raw/DataFushan/fushan.RData"); data.fushan <- data.frame(fushan); rm(fushan) +data.trait <- read.table("./data/raw/DataFushan/fs_trait_Kunstler.txt",header=T, sep = "\t") +colnames(data.trait) <- c("sp","sla","wd","seedmassmg","meanN","maxheightm") + +### read species names +species.clean <- read.csv("./data/raw/DataFushan/Splist_Fushan_En.csv",stringsAsFactors=FALSE) + +###################################### +## MASSAGE TRAIT DATA +############################ +## Obtain maximum height per species from data.trait; no sd available as we have only one observation for species +data.max.height <- data.frame(sp = data.trait$sp, Max.height = log10(data.trait$maxheightm)) +data.fushan <- merge(data.fushan, data.max.height, by = "sp") + +########################################## +## FORMAT INDIVIDUAL TREE DATA +############# + +## change unit and names of variables to be the same in all data for the tree - DON'T HAVE A YEAR MEASUREMENT +data.fushan$G <- 10*(data.fushan$dbh2 -data.fushan$dbh1)/data.fushan$Interval ## diameter growth in mm per year +data.fushan$year <- data.fushan$Interval ## number of year between measurement - MISSING +data.fushan$D <- data.fushan[["dbh1"]]; ## diameter in cm +data.fushan$dead <- as.numeric(data.fushan$status2 == "alive") ## dummy variable for dead tree 0 alive 1 dead +data.fushan$plot <- (data.fushan[["PLOT_ID"]]) ## plot code - MISSING +data.fushan$htot <- rep(NA,length(data.fushan[["dbh1"]]))## height of tree in m - MISSING +data.fushan$tree.id <- data.fushan$tag ## tree unique id - MISSING +data.fushan$sp.name <- NA; v <- species.clean$SP +for(i in 1:length(unique(data.fushan$sp))) { + sel.spp <- which(data.fushan$sp == unique(data.fushan$sp)[i]) + data.fushan$sp.name[sel.spp] <- paste(species.clean$family[sel.spp],species.clean$genus[sel.spp], species.clean$epithet[sel.spp], sep = ".") } + +########################################## +## CHANGE COORDINATE SYSTEM +############# +## DON'T KNOW! + +###################### +## ECOREGION +################### +## DON'T SEE DATA FOR THIS AT THE MOMENT, ALTHOUGH IT'S PROBABLY ALL IN ONE ECOREGION ANYWAY? + +###################### +## PERCENT DEAD +################### +## CANNOT DO THIS WITHOUT A PLOTID +## compute numer of dead per plot to remove plot with disturbance +perc.dead <- tapply(data.fushan[["dead"]],INDEX=data.fushan[["plot"]],FUN=function.perc.dead) +# ## VARIABLE TO SELECT PLOT WITH NOT BIG DISTURBANCE KEEP OFTHER VARIABLES IF AVAILABLE (disturbance record) +data.fushan <- merge(data.fushan,data.frame(plot=names(perc.dead),perc.dead=perc.dead), by = "plot", sort=FALSE) + +########################################################### +### PLOT SELECTION FOR THE ANALYSIS +################### +## Remove data with dead == 1 +table(data.fushan$dead) +data.fushan <- data.fushan[data.fushan$dead == 1,] + +colnames(data.fushan)[c(3,1,11,13)] <- c("sp","plot","w") +vec.abio.var.names <- c("MAT","MAP") +vec.basic.var <- c("tree.id","sp","sp.name","plot","D","G","dead","year","htot","gx","gy","perc.dead") +data.tree <- subset(data.fushan,select=c(vec.basic.var,vec.abio.var.names)) + +############################################## +## COMPUTE MATRIX OF COMPETITION INDEX WITH SUM OF BA PER SPECIES IN EACH PLOT in m^2/ha without the target species +########################### +## CANNOT DO WITHOUT A PLOT ID +data.BA.SP <- BA.SP.FUN(id.tree=as.vector(data.fushan[["tree.id"]]), diam=as.vector(data.fushan[["D"]]), + sp=as.vector(data.fushan[["sp"]]), id.plot=as.vector(data.fushan[["plot"]]), + weights=1/(pi*(0.5*data.fushan[["dbh1"]])^2), weight.full.plot=NA) + +## change NA and <0 data for 0 +data.BA.SP[is.na(data.BA.SP)] <- 0; data.BA.SP[,-1][data.BA.SP[,-1]<0] <- 0 + +### CHECK IF sp and sp name for column are the same +if(sum(!(names(data.BA.SP)[-1] %in% unique(data.fushan[["sp"]]))) >0) stop("competition index sp name not the same as in data.tree") + +#### compute BA tot for all competitors +BATOT.COMPET <- apply(data.BA.SP[,-1],1,sum,na.rm=TRUE) +data.BA.SP$BATOT.COMPET <- BATOT.COMPET; rm(BATOT.COMPET) +### create data frame +names(data.BA.SP) <- c("tree.id",names(data.BA.SP)[-1]) +data.BA.sp <- merge(data.frame(tree.id=data.fushan[["tree.id"]],ecocode=data.fushan[["ecocode"]]),data.BA.SP,by="tree.id",sort=FALSE) +## test +if(sum(!data.BA.sp[["tree.id"]] == data.tree[["tree.id"]]) >0) stop("competition index not in the same order than data.tree") + +## save everything as a list +list.canada <- list(data.tree=data.tree,data.BA.SP=data.BA.sp,data.traits=data.traits) +save(list.spain,file="./data/process/list.canada.Rdata") +