#!/usr/bin/env Rscript ##### FORMAT TRAIT FOR Sweden source("R/find.trait/trait.fun.R") ### read species names data.tree <- read.csv("output/formatted/Sweden/tree.csv", stringsAsFactors = FALSE) species.clean <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"], Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"], Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"], stringsAsFactors =FALSE) ## delete the sp code with no species species.clean <- subset(species.clean,subset=!is.na(species.clean$Latin_name)) ## select column to keep ## read in data data.TRY.std <- readRDS("output/formatted/TRY/data.TRY.std.rds") ## read France max height max.height <- read.csv(file="output/formatted/France/max.height.csv", stringsAsFactors = FALSE) ## load latin name France data.tree <- read.csv("output/formatted/France/tree.csv", stringsAsFactors = FALSE) species.clean2 <- data.frame(sp=data.tree[!duplicated(data.tree[["sp"]]),"sp"], Latin_name=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"], Latin_name_syn=data.tree[!duplicated(data.tree[["sp"]]),"sp.name"], stringsAsFactors =FALSE) ## delete the sp code with no species #species.clean2 <- subset(species.clean2,subset=!is.na(species.clean2$Latin_name)) ## add latin name max.height <- merge(subset(max.height,select=c("sp","Max.height.mean","Max.height.sd","Max.height.nobs")),species.clean2,by="sp") ## extract traits and height data.traits <- fun.extract.format.sp.traits.TRY(sp=species.clean[["sp"]],sp.syno.table=species.clean, data=data.TRY.std) #data.traits <- merge(data.traits,subset(max.height,select=c("Latin_name","Max.height.mean","Max.height.sd")),by="Latin_name",all.x=TRUE,all.y=FALSE) data.traits <- merge(data.traits,subset(max.height,select=c("Latin_name","Max.height.mean","Max.height.sd")), by="Latin_name",all.x=TRUE,all.y=FALSE) data.traits$Max.height.genus <- FALSE # genus mean for height height.genus.DF <- do.call("rbind",lapply(data.traits$Latin_name,fun.compute.mean.genus,max.height, "Max.height.mean")) data.traits[is.na(data.traits[["Max.height.mean"]]), c("Max.height.mean","Max.height.sd","Max.height.genus")] <- height.genus.DF[is.na(data.traits[["Max.height.mean"]]),] #### Assume sp.30 Betula spp is mainly sp.31 Betula pendula and sp.32 Betula pubsecens and take the mean of that data.traits$Leaf.N.mean[data.traits$sp=="sp.30"] <- mean(data.traits$Leaf.N.mean[data.traits$sp %in% c("sp.31","sp.32")]) data.traits$Seed.mass.mean[data.traits$sp=="sp.30"] <- mean(data.traits$Seed.mass.mean[data.traits$sp %in% c("sp.31","sp.32")]) data.traits$SLA.mean[data.traits$sp=="sp.30"] <- mean(data.traits$SLA.mean[data.traits$sp %in% c("sp.31","sp.32")]) data.traits$Wood.density.mean[data.traits$sp=="sp.30"] <- mean(data.traits$Wood.density.mean[data.traits$sp %in% c("sp.31","sp.32")]) data.traits$Max.height.mean[data.traits$sp=="sp.30"] <- mean(data.traits$Max.height.mean[data.traits$sp %in% c("sp.31","sp.32")]) data.traits$Leaf.N.genus[data.traits$sp=="sp.30"] <- FALSE data.traits$Seed.mass.genus[data.traits$sp=="sp.30"] <- FALSE data.traits$SLA.genus[data.traits$sp=="sp.30"] <- FALSE data.traits$Wood.density.genus[data.traits$sp=="sp.30"] <- FALSE data.traits$Max.height.genus[data.traits$sp=="sp.30"] <- FALSE ## do the same for quercus robur and quercus petraea data.quercus <-(data.frame(sp=c("sp.500","sp.501"), Latin_name=c("Quercus robur","Quercus petraea"), Latin_name_syn=c("Quercus robur","Quercus petraea"))) data.quercus <- fun.extract.format.sp.traits.TRY(sp=data.quercus[["sp"]], sp.syno.table=data.quercus, data=data.TRY.std) data.traits$Leaf.N.mean[data.traits$sp=="sp.51"] <- mean(data.quercus$Leaf.N.mean) data.traits$Seed.mass.mean[data.traits$sp=="sp.51"] <- mean(data.quercus$Seed.mass.mean) data.traits$SLA.mean[data.traits$sp=="sp.51"] <- mean(data.quercus$SLA.mean) data.traits$Wood.density.mean[data.traits$sp=="sp.51"] <- mean(data.quercus$Wood.density.mean) data.traits$Max.height.mean[data.traits$sp=="sp.51"] <- mean(max.height$Max.height.mean[max.height$Latin_name %in% c("Quercus robur","Quercus petraea")]) data.traits$Leaf.N.genus[data.traits$sp=="sp.51"] <- FALSE data.traits$Seed.mass.genus[data.traits$sp=="sp.51"] <- FALSE data.traits$SLA.genus[data.traits$sp=="sp.51"] <- FALSE data.traits$Wood.density.genus[data.traits$sp=="sp.51"] <- FALSE data.traits$Max.height.genus[data.traits$sp=="sp.51"] <- FALSE ### TODO ADD GENUS MEAN FOR HEIGHT IF SPECIES IS MISSING write.csv(data.traits,file="output/formatted/Sweden/traits.csv",row.names = FALSE)