diff --git a/merge.data.SWEDEN.R b/merge.data.SWEDEN.R
index fa87734796048fa6b202c00bcd4183e67a58ddd0..d83fcdcc5c77bfca8de4c2381c7b19c57029deb0 100644
--- a/merge.data.SWEDEN.R
+++ b/merge.data.SWEDEN.R
@@ -1,46 +1,64 @@
 ### MERGE sweden DATA
 rm(list = ls()); source("./R/format.function.R"); library(reshape); 
 
-#########################
-## READ DATA
-####################
-### read individuals tree data
+######################### READ DATA read individuals tree data
 #data.swe1 <- read.csv("./data/raw/DataSweden/Swe_NFI_1.csv",header=T,stringsAsFactors=F)
 #data.swe2 <- read.csv("./data/raw/DataSweden/Swe_NFI_2a.csv",header=T,stringsAsFactors=F)
 #data.swe3 <- read.csv("./data/raw/DataSweden/Swe_NFI_3.csv",header=T,stringsAsFactors=F)
 data.swe <- read.table("./data/raw/DataSweden/Swe_NFI_all.txt",header=T,stringsAsFactors=F,sep="\t")
 head(data.swe)
-data.swe$plot.id <- paste(data.swe[["TractNr"]],data.swe[["PlotNr"]],data.swe[["Year"]])
-data.swe$tree.id <- paste(data.swe[["TreeNr"]],data.swe[["TractNr"]],data.swe[["PlotNr"]],data.swe[["Year"]])
-
-
-### Species names are in the xlsx files if required (we already have sp codes)
-
+data.swe$tree.id <- apply(cbind(data.swe[["TreeNr"]],data.swe[["TractNr"]],data.swe[["PlotNr"]],data.swe[["Year"]]),1,paste,collapse="_")
+data.swe$plot.id <- apply(cbind(data.swe[["TractNr"]],data.swe[["PlotNr"]],data.swe[["Year"]]),1,paste,collapse="_")
+#data.swe <- data.swe[order(data.swe$tree.id),]
+
+## Species names are in the xlsx files if required (we already have sp codes)
+#dim(data.swe)
+#table(table(data.swe$TreeID))
+#table(table(paste(data.swe$TractNr,data.swe$PlotNr,data.swe$TreeNr,data.swe$Year)))
 #data.swe <- rbind(data.swe1, data.swe2, data.swe3); 
 #rm(data.swe1, data.swe2, data.swe3)
-#data.swe$treeid <- apply(data.swe[,3:5],1,paste,collapse="_")
-#data.swe$plotid <- apply(data.swe[,3:4],1,paste,collapse="_")
-data.swe <- data.swe[order(data.swe$TreeID,data.swe$PlotInvent),] ## Shows the TreeID = "" first
-data.swe <- data.swe[order(paste(data.swe$TractNr,data.swe$PlotNr,data.swe$TreeNr)),] ## Shows the TreeID = "" first
-head(data.swe)
-sum(data.swe$TreeID == "")
-dim(data.swe)
-table(table(data.swe$TreeID))
-table(table(paste(data.swe$TractNr,data.swe$PlotNr,data.swe$TreeNr,data.swe$Year)))
-
-### STOP HERE!!!
-
-######################################
-## MASSAGE TRAIT DATA
-############################
-## Mean height in dataset
-
-##########################################
-## FORMAT INDIVIDUAL TREE DATA
-#############
-
-## change unit and names of variables to be the same in all data for the tree 
-data.swe$G <- 10*(data.swe$FinalDBH-data.swe$InitDBH)/data.swe$Interval ## diameter growth in mm per year
+#data.swe <- data.swe[order(data.swe$TreeID,data.swe$PlotInvent),] ## Shows the TreeID = "" first
+#data.swe <- data.swe[order(paste(data.swe$TractNr,data.swe$PlotNr,data.swe$TreeNr)),] ## Shows the TreeID = "" first
+
+## Format to desired form
+data.swe$PlotInventID <- NULL; data.swe$TreeID <- NULL; 
+data.swe2 <- data.swe[rep(1:nrow(data.swe),each=2),]
+data.swe2$dbh1 <- as.vector(rbind(data.swe$dia_t1,data.swe$dia_t2))
+data.swe2$dbh2 <- as.vector(rbind(data.swe$dia_t2,data.swe$dia_t3))
+data.swe2$dia_t1 <- data.swe2$dia_t2 <- data.swe2$dia_t3 <- NULL
+data.swe2$vol1 <- as.vector(rbind(data.swe$vol_t1,data.swe$vol_t2))
+data.swe2$vol2 <- as.vector(rbind(data.swe$vol_t2,data.swe$vol_t3))
+data.swe2$vol_t1 <- data.swe2$vol_t2 <- data.swe2$vol_t3 <- NULL
+data.swe2$dryw1 <- as.vector(rbind(data.swe$DryW_t1,data.swe$DryW_t2))
+data.swe2$dryw2 <- as.vector(rbind(data.swe$DryW_t2,data.swe$DryW_t3))
+data.swe2$DryW_t1 <- data.swe2$DryW_t2 <- data.swe2$DryW_t3 <- NULL
+
+data.swe2$Diameter <- data.swe2$Volume <- data.swe2$BrhAge <- NULL
+data.swe <- data.swe2
+rm(data.swe2)
+
+###################################### MASSAGE TRAIT DATA Compute maximum height per species plus sd from observed
+###################################### height to add variables to the traits data base Because we have two heights,
+###################################### then take the max of the two heights and then bootstrap
+## Obtain heights in dataset - I assume that they use the volume of a cylinder V = pi*r^2*h
+data.swe$ht1 <- data.swe$vol1/(pi*(0.5*data.swe$dbh1/1000)^2)
+data.swe$ht2 <- data.swe$vol2/(pi*(0.5*data.swe$dbh2/1000)^2)
+
+res.quant.boot <- t(sapply(levels(factor(data.swe[["TreeSpecies"]])), FUN = f.quantile.boot, 
+    R = 1000, x = log10(apply(data.swe[, c("ht1", "ht2")], 1, max, na.rm = T)), 
+    fac = factor(data.swe[["TreeSpecies"]])))
+
+## create data base
+data.max.height <- data.frame(code = rownames(res.quant.boot), Max.height.mean = res.quant.boot[, 
+    1], Max.height.sd = res.quant.boot[, 2], Max.height.nobs = res.quant.boot[, 3], stringsAsFactors =FALSE)
+rm(res.quant.boot)
+write.csv(data.max.height,file='./data/process/data.max.height.swe.csv')
+
+########################################## FORMAT INDIVIDUAL TREE DATA 
+## STOP HERE!!!
+data.swe$obs.id <- 1:nrow(data.swe) 
+data.swe$census.id <- rep(1:2,nrow(data.swe)/2) ## Using first census in the row
+data.swe$G <- 10*(data.swe$dbh2-data.swe$dbh1)/data.swe$Interval ## diameter growth in mm per year
 data.swe$G[which(data.swe$InitDBH == 0 | data.swe$FinalDBH == -999)] <- NA
 data.swe$year <- data.swe$Interval ## number of year between measuremen
 data.swe$D <- data.swe[["InitDBH"]]; data.swe$D[data.swe$D == 0] <- NA ;## diameter in cm