Commit c5a10a8c authored by fhui28's avatar fhui28
Browse files

minor edits to BCI,Canada,Fushan in accordance with milestones

No related merge requests found
Showing with 49 additions and 64 deletions
+49 -64
### MERGE BCI DATA Edited by FH ### MERGE BCI DATA
rm(list = ls()) rm(list = ls())
source("./R/format.function.R") source("./R/format.function.R")
library(reshape) library(reshape)
...@@ -8,29 +8,33 @@ library(reshape) ...@@ -8,29 +8,33 @@ library(reshape)
######################### longer exists in census X+1, X+2 etc... ######################### longer exists in census X+1, X+2 etc...
data.bci1 <- read.table("./data/raw/DataBCI/census1/PlotsDataReport.txt", header = TRUE, data.bci1 <- read.table("./data/raw/DataBCI/census1/PlotsDataReport.txt", header = TRUE,
stringsAsFactors = FALSE, sep = "\t") 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 big.bci <- NULL
for (k in 2:7) { for (k in 2:7) {
new.directory <- paste("./data/raw/DataBCI/census", k, "/PlotsDataReport.txt", new.directory <- paste("./data/raw/DataBCI/census", k, "/PlotsDataReport.txt",
sep = "") sep = "")
data.bci2 <- read.table(new.directory, header = TRUE, stringsAsFactors = FALSE, data.bci2 <- read.table(new.directory, header = TRUE, stringsAsFactors = FALSE,
sep = "\t") sep = "\t");
if (!is.null(big.bci)) { if (!is.null(big.bci)) {
sub.bci <- merge(data.bci1[, c(2:7, 11, 13)], data.frame(TreeID = data.bci2[["TreeID"]], 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"]] == DBH2 = data.bci2[["DBH"]], Date2 = data.bci2[["Date"]], dead = as.numeric(data.bci2[["Status"]] ==
"dead")), sort = T, by = "TreeID") "dead"),stringsAsFactors=F), sort = T, by = "TreeID") ## Uses the Date1 as the census number
big.bci <- rbind(big.bci, sub.bci) big.bci <- rbind(big.bci, sub.bci)
} }
if (is.null(big.bci)) { if (is.null(big.bci)) {
big.bci <- merge(data.bci1[, c(2:7, 11, 13)], data.frame(TreeID = data.bci2[["TreeID"]], 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"]] == DBH2 = data.bci2[["DBH"]], Date2 = data.bci2[["Date"]], dead = as.numeric(data.bci2[["Status"]] ==
"dead")), sort = T, by = "TreeID") "dead"),stringsAsFactors=F), sort = T, by = "TreeID")
} }
data.bci1 <- data.bci2 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") cat("Census", k, "now included\n")
print(summary(big.bci$DBH1)); print(summary(big.bci$DBH2))
} }
rm(data.bci1, data.bci2, sub.bci) rm(data.bci1, data.bci2, sub.bci)
big.bci <- big.bci[order(big.bci$TreeID), ] big.bci <- big.bci[order(big.bci$TreeID), ]
colnames(big.bci)[c(7:8)] <- c("DBH1", "Date1")
data.bci <- big.bci data.bci <- big.bci
rm(big.bci) rm(big.bci)
...@@ -39,25 +43,25 @@ species.clean <- read.table("./data/raw/DataBCI/TaxonomyDataReport.txt", strings ...@@ -39,25 +43,25 @@ species.clean <- read.table("./data/raw/DataBCI/TaxonomyDataReport.txt", strings
header = T, sep = "\t") header = T, sep = "\t")
## Try to relate SpeciesID in species.clean species names in data.bci ## Try to relate SpeciesID in species.clean species names in data.bci
data.bci$sp2 = species.clean$SpeciesID[match(data.bci$Latin, paste(species.clean[["Genus"]], data.bci$sp = species.clean$SpeciesID[match(data.bci$Latin, paste(species.clean[["Genus"]],
species.clean[["species"]]))] species.clean[["species"]]))]
length(unique(data.bci$sp)) length(unique(data.bci$sp))
###################################### MASSAGE TRAIT DATA Use HEIGHT_AVG, LMALAM_AVD, SEED_DRY, BUT I DO NOT KNOW ###################################### MASSAGE TRAIT DATA Use HEIGHT_AVG, LMALAM_AVD, SEED_DRY
###################################### WHICH WOOD DENSITY VARIABLE TO USE
data.trait <- read.csv("./data/raw/DataBCI/BCITRAITS_20101220.csv", stringsAsFactors = FALSE, data.trait <- read.csv("./data/raw/DataBCI/BCITRAITS_20101220.csv", stringsAsFactors = FALSE,
header = T) header = T)
data.trait$Latin <- apply(data.trait[, 1:2], 1, paste, collapse = " ") data.trait$Latin <- apply(data.trait[, 1:2], 1, paste, collapse = " ")
data.bci <- merge(data.bci, data.trait[, c(ncol(data.trait), 3, 7:10, 13, 15, 18, data.bci <- merge(data.bci, data.trait[, c(ncol(data.trait), 3, 7:10, 13, 15, 18,
20:21)], by = "Latin", all.x = T) 20:21)], by = "Latin", all.x = T)
data.bci <- data.bci[order(data.bci$TreeID), ]
########################################## FORMAT INDIVIDUAL TREE DATA ########################################## FORMAT INDIVIDUAL TREE DATA
data.bci <- data.bci[order(data.bci[["TreeID"]]),]
data.bci$Date1 <- as.Date(data.bci$Date1) data.bci$Date1 <- as.Date(data.bci$Date1)
data.bci$Date2 <- as.Date(data.bci$Date2) data.bci$Date2 <- as.Date(data.bci$Date2)
# data.bci$yr1 <- format(strptime(data.bci$Date1, format = '%Y-%m-%d'),'%Y') # 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$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$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="_")
## change unit and names of variables to be the same in all data for the tree ## 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$G <- 10 * (data.bci$DBH1 - data.bci$DBH1)/data.bci$year ## diameter growth in mm per year - BASED ON UNROUNDED YEARS
...@@ -65,24 +69,19 @@ data.bci$D <- data.bci[["DBH1"]] ...@@ -65,24 +69,19 @@ data.bci$D <- data.bci[["DBH1"]]
data.bci$plot <- data.bci[["Quadrat"]] ## plot code? data.bci$plot <- data.bci[["Quadrat"]] ## plot code?
data.bci$htot <- data.bci$HEIGHT_AVG data.bci$htot <- data.bci$HEIGHT_AVG
data.bci$sp.name <- data.bci$Latin data.bci$sp.name <- data.bci$Latin
data.bci$weights <- 1/(pi*(0.5*data.bci$D/100)^2)
###################### ECOREGION bci has only 1 eco-region ###################### ECOREGION bci has only 1 eco-region
###################### PERCENT DEAD variable percent dead/cannot do with since dead variable is ###################### PERCENT DEAD variable percent dead/cannot do with since dead variable is
###################### missing compute numer of dead per plot to remove plot with disturbance ###################### missing compute numer of dead per plot to remove plot with disturbance
function.perc.dead2 <- function(dead) {
out <- sum(dead, na.rm = T)/length(dead[!is.na(dead)])
if (!is.finite(out))
out <- NA
return(out)
}
perc.dead <- tapply(data.bci[["dead"]], INDEX = data.bci[["plot"]], FUN = function.perc.dead2) 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), data.bci <- merge(data.bci, data.frame(plot = names(perc.dead), perc.dead = perc.dead),
by = "plot", sort = FALSE) by = "plot", sort = FALSE)
########################################################### PLOT SELECTION FOR THE ANALYSIS Remove data with dead == 1 ########################################################### PLOT SELECTION FOR THE ANALYSIS Remove data with dead == 1
table(data.bci$dead) table(data.bci$dead)
data.bci <- data.bci[data.bci$dead == 0,]
vec.abio.var.names <- c("MAT", "MAP") ## MISSING vec.abio.var.names <- c("MAT", "MAP") ## MISSING
vec.basic.var <- c("treeid", "sp", "sp.name", "plot", "D", "G", "dead", "year", "htot", vec.basic.var <- c("treeid", "sp", "sp.name", "plot", "D", "G", "dead", "year", "htot",
...@@ -90,10 +89,9 @@ vec.basic.var <- c("treeid", "sp", "sp.name", "plot", "D", "G", "dead", "year", ...@@ -90,10 +89,9 @@ vec.basic.var <- c("treeid", "sp", "sp.name", "plot", "D", "G", "dead", "year",
data.tree <- subset(data.bci, select = c(vec.basic.var, vec.abio.var.names)) data.tree <- subset(data.bci, select = c(vec.basic.var, vec.abio.var.names))
############################################## COMPUTE MATRIX OF COMPETITION INDEX WITH SUM OF BA PER SPECIES IN EACH PLOT in ############################################## COMPUTE MATRIX OF COMPETITION INDEX WITH SUM OF BA PER SPECIES IN EACH PLOT in
############################################## m^2/ha without the target species DON'T KNOW SUBPLOT SIZE! ############################################## m^2/ha without the target species
data.BA.SP <- BA.SP.FUN(id.tree = as.vector(data.bci[["TreeID"]]), diam = as.vector(data.bci[["D"]]), data.BA.SP <- BA.SP.FUN(id.tree = as.vector(data.bci[["TreeID"]]), diam = as.vector(data.bci[["D"]]),
sp = as.vector(data.bci[["sp"]]), id.plot = as.vector(data.bci[["plot"]]), weights = 1/(pi * sp = as.vector(data.bci[["sp"]]), id.plot = as.vector(data.bci[["plot"]]), weights = data.bic[["weights"]], weight.full.plot = NA)
(0.5 * data.bci$D/100)^2), weight.full.plot = NA)
## change NA and <0 data for 0 ## change NA and <0 data for 0
data.BA.SP[is.na(data.BA.SP)] <- 0 data.BA.SP[is.na(data.BA.SP)] <- 0
......
### MERGE canada DATA Edited by FH ### MERGE canada DATA
rm(list = ls()) rm(list = ls())
source("./R/format.function.R") source("./R/format.function.R")
source("./R/FUN.TRY.R") source("./R/FUN.TRY.R")
library(reshape) library(reshape)
######################### READ DATA read individuals tree data data.canada <- ######################### READ DATA read individuals tree data
data.canada <- read.csv("./data/raw/DataCanada/Canada_Data2George_20130818.csv", data.canada <- read.csv("./data/raw/DataCanada/Canada_Data2George_20130818.csv",
header = TRUE, stringsAsFactors = FALSE) header = TRUE, stringsAsFactors = FALSE)
data.canada <- data.canada[which(!is.na(data.canada$Species)), ] data.canada <- data.canada[which(!is.na(data.canada$Species)),]
colnames(data.canada)[2] <- "Species" colnames(data.canada)[2] <- "sp"
### read species names ### read species names
species.clean <- read.csv("./data/raw/DataCanada/FIA_REF_SPECIES.csv", stringsAsFactors = FALSE) species.clean <- read.csv("./data/raw/DataCanada/FIA_REF_SPECIES.csv", stringsAsFactors = FALSE)
...@@ -18,26 +18,22 @@ species.clean <- read.csv("./data/raw/DataCanada/FIA_REF_SPECIES.csv", stringsAs ...@@ -18,26 +18,22 @@ species.clean <- read.csv("./data/raw/DataCanada/FIA_REF_SPECIES.csv", stringsAs
########################################## FORMAT INDIVIDUAL TREE DATA ########################################## FORMAT INDIVIDUAL TREE DATA
## change unit and names of variables to be the same in all data for the tree
data.canada$G <- 10 * (data.canada$FinalDBH - data.canada$InitDBH)/data.canada$Interval ## diameter growth in mm per year data.canada$G <- 10 * (data.canada$FinalDBH - data.canada$InitDBH)/data.canada$Interval ## diameter growth in mm per year
data.canada$G[which(data.canada$InitDBH == 0 | data.canada$FinalDBH == -999)] <- NA data.canada$G[which(data.canada$InitDBH == 0 | data.canada$FinalDBH == -999)] <- NA
data.canada$year <- data.canada$Interval ## number of year between measuremen data.canada$year <- data.canada$Interval ## number of year between measurement
data.canada$D <- data.canada[["InitDBH"]] data.canada$D <- data.canada[["InitDBH"]]
data.canada$D[data.canada$D == 0] <- NA data.canada$D[data.canada$D == 0] <- NA ## diameter in cm
## diameter in cm data.canada$dead <- as.numeric(data.canada$FinalDBH < 0) ## dummy variable for dead tree 0 alive 1 dead
data.canada$dead <- as.numeric(data.canada$FinalDBH > 0) ## dummy variable for dead tree 0 alive 1 dead data.canada$plot <- (data.canada[["PLOT_ID"]]); data.canada[["PLOT_ID"]] <- NULL ## plot code
data.canada$sp <- as.character(data.canada[["Species"]]) ## species code data.canada$htot <- rep(NA, nrow(data.canada)) ## height of tree in m - MISSING
data.canada$plot <- (data.canada[["PLOT_ID"]]) ## plot code data.canada$tree.id <- data.canada$PLOTTREE_I; data.canada$PLOTTREE_I <- NULL ## tree unique id
data.canada$htot <- rep(NA, length(data.canada[["Species"]])) ## height of tree in m - MISSING
data.canada$tree.id <- gsub("_", ".", data.canada$PLOTTREE)
## tree unique id
data.canada$sp.name <- NA data.canada$sp.name <- NA
for (i in 1:length(unique(data.canada$sp))) { for (i in 1:length(unique(data.canada$sp))) {
v <- species.clean$SPCD v <- species.clean$SPCD
data.canada$sp.name[which(data.canada$sp == unique(data.canada$sp)[i])] <- species.clean$COMMON_NAME[which(v == data.canada$sp.name[which(data.canada$sp == unique(data.canada$sp)[i])] <- species.clean$COMMON_NAME[which(v ==
unique(data.canada$sp)[i])] unique(data.canada$sp)[i])]
} }
data.canada$weights <- 1/(pi*(0.5*data.bci$D/100)^2)
###################### ECOREGION merge greco to have no ecoregion with low number of observation ###################### ECOREGION merge greco to have no ecoregion with low number of observation
...@@ -63,17 +59,14 @@ mycols <- brewer.pal(10, "Set3") ...@@ -63,17 +59,14 @@ mycols <- brewer.pal(10, "Set3")
###################### PERCENT DEAD variable percent dead/cannot do with since dead variable is ###################### PERCENT DEAD variable percent dead/cannot do with since dead variable is
###################### missing compute numer of dead per plot to remove plot with disturbance ###################### missing compute numer of dead per plot to remove plot with disturbance
perc.dead <- tapply(data.canada[["dead"]], INDEX = data.canada[["plot"]], FUN = function.perc.dead) perc.dead <- tapply(data.canada[["dead"]], INDEX = data.canada[["plot"]], FUN = function.perc.dead2)
# ## VARIABLE TO SELECT PLOT WITH NOT BIG DISTURBANCE KEEP OFTHER VARIABLES IF
# AVAILABLE (disturbance record)
data.canada <- merge(data.canada, data.frame(plot = names(perc.dead), perc.dead = perc.dead), data.canada <- merge(data.canada, data.frame(plot = names(perc.dead), perc.dead = perc.dead),
by = "plot", sort = FALSE) by = "plot", sort = FALSE)
########################################################### PLOT SELECTION FOR THE ANALYSIS Remove data with dead == 1 ########################################################### PLOT SELECTION FOR THE ANALYSIS Remove data with dead == 1
table(data.canada$dead) table(data.canada$dead)
## Nothing to remove data.canada <- data.canada[data.canada$dead == 0,]
colnames(data.canada)[c(3, 1, 11, 13)] <- c("sp", "plot", "w", "ecocode")
vec.abio.var.names <- c("MAT", "MAP") vec.abio.var.names <- c("MAT", "MAP")
vec.basic.var <- c("tree.id", "sp", "sp.name", "plot", "ecocode", "D", "G", "dead", vec.basic.var <- c("tree.id", "sp", "sp.name", "plot", "ecocode", "D", "G", "dead",
"year", "htot", "Lon", "Lat", "perc.dead") "year", "htot", "Lon", "Lat", "perc.dead")
......
### MERGE Fushan DATA Edited by FH ### MERGE Fushan DATA
rm(list = ls()) rm(list = ls())
source("./R/format.function.R") source("./R/format.function.R")
library(reshape) library(reshape)
...@@ -20,43 +20,37 @@ data.max.height <- data.frame(sp = data.trait$sp, Max.height = log10(data.trait$ ...@@ -20,43 +20,37 @@ data.max.height <- data.frame(sp = data.trait$sp, Max.height = log10(data.trait$
data.fushan <- merge(data.fushan, data.max.height, by = "sp") data.fushan <- merge(data.fushan, data.max.height, by = "sp")
########################################## FORMAT INDIVIDUAL TREE DATA ########################################## 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$year <- data.fushan$Interval ## number of year between measurement - MISSING
data.fushan$D <- data.fushan[["dbh1"]] data.fushan$G <- 10*(data.fushan$dbh2 - data.fushan$dbh1)/data.fushan$Interval ## diameter growth in mm per year
## diameter in cm 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$dead <- as.numeric(data.fushan$status2 == "dead") ## dummy variable for dead tree 0 alive 1 dead
data.fushan$plot <- (data.fushan[["PLOT_ID"]]) ## plot code - MISSING data.fushan$plot <- rep(NA,nrow(data.fushan)) ## plot code - MISSING
data.fushan$htot <- rep(NA, length(data.fushan[["dbh1"]])) ## height of tree in m - MISSING data.fushan$htot <- rep(NA,nrow(data.fushan)) ## height of tree in m - MISSING
data.fushan$tree.id <- data.fushan$tag ## tree unique id - MISSING data.fushan$tree.id <- data.fushan$tag ## tree unique id
data.fushan$sp.name <- NA data.fushan$sp.name <- rep(NA,nrow(data.fushan))
v <- species.clean$SP v <- species.clean$sp
for (i in 1:length(unique(data.fushan$sp))) { for (i in 1:length(unique(data.fushan$sp))) {
sel.spp <- which(data.fushan$sp == unique(data.fushan$sp)[i]) 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], data.fushan$sp.name[sel.spp] <- paste(species.clean$family[sel.spp], species.clean$genus[sel.spp],
species.clean$epithet[sel.spp], sep = ".") species.clean$epithet[sel.spp], sep = "_")
} }
data.fushan$weights <- 1/(pi*(0.5*data.bci$D/100)^2)
data.fushan$obs.id <- data.fushan$tag
########################################## CHANGE COORDINATE SYSTEM DON'T KNOW! ########################################## CHANGE COORDINATE SYSTEM DON'T KNOW!
###################### ECOREGION DON'T SEE DATA FOR THIS AT THE MOMENT, ALTHOUGH IT'S PROBABLY ALL IN ###################### 1 ECOREGION ONLY?
###################### ONE ECOREGION ANYWAY?
###################### PERCENT DEAD CANNOT DO THIS WITHOUT A PLOTID compute numer of dead per plot to ###################### PERCENT DEAD CANNOT DO THIS WITHOUT A PLOTID compute numer of dead per plot to
###################### remove plot with disturbance ###################### remove plot with disturbance
perc.dead <- tapply(data.fushan[["dead"]], INDEX = data.fushan[["plot"]], FUN = function.perc.dead) perc.dead <- tapply(data.fushan[["dead"]], INDEX = data.fushan[["plot"]], FUN = function.perc.dead2)
# ## 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), data.fushan <- merge(data.fushan, data.frame(plot = names(perc.dead), perc.dead = perc.dead),
by = "plot", sort = FALSE) by = "plot", sort = FALSE)
########################################################### PLOT SELECTION FOR THE ANALYSIS Remove data with dead == 1 ########################################################### PLOT SELECTION FOR THE ANALYSIS Remove data with dead == 1
table(data.fushan$dead) table(data.fushan$dead)
data.fushan <- data.fushan[data.fushan$dead == 1, ] data.fushan <- data.fushan[data.fushan$dead == 0, ]
colnames(data.fushan)[c(3, 1, 11, 13)] <- c("sp", "plot", "w")
vec.abio.var.names <- c("MAT", "MAP") vec.abio.var.names <- c("MAT", "MAP")
vec.basic.var <- c("tree.id", "sp", "sp.name", "plot", "D", "G", "dead", "year", vec.basic.var <- c("tree.id", "sp", "sp.name", "plot", "D", "G", "dead", "year",
"htot", "gx", "gy", "perc.dead") "htot", "gx", "gy", "perc.dead")
...@@ -66,7 +60,7 @@ data.tree <- subset(data.fushan, select = c(vec.basic.var, vec.abio.var.names)) ...@@ -66,7 +60,7 @@ data.tree <- subset(data.fushan, select = c(vec.basic.var, vec.abio.var.names))
############################################## m^2/ha without the target species CANNOT DO WITHOUT A PLOT ID ############################################## 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"]]), 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"]]), 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) weights = data.fushan$weights, weight.full.plot = NA)
## change NA and <0 data for 0 ## change NA and <0 data for 0
data.BA.SP[is.na(data.BA.SP)] <- 0 data.BA.SP[is.na(data.BA.SP)] <- 0
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment