#' Calculate rarefied richness at multiple spatial scales
#'
#' @ indf=dataframe containing species incidence data
#' @ splev=grouping factor for different species
#' @ scale1=spatial scale 1 (usually archipelago)
#' @ scale2=spatial scale 2 (usually island)
#' @ scale3=spatial scale 3 (usually plot level)
#'
rarmultilev<-function(indf,splev,scale1=NULL,scale2=NULL,scale3=NULL){
indf %>% as.data.frame() ->indf
# Archipelago-Gamma diversity
if(is.null(scale2)=="TRUE"){
# extract species level info
disp.l<-as.character(unique(dplyr::pull(indf,splev)))
group.rar<-NULL
for (focaldisp in disp.l){
indf[indf[,splev] %in% focaldisp,] ->tmp
# minimum number of records
tmp %>%
select(-one_of(c(scale1,splev))) %>%
rowSums() %>%
min() ->minrec
# rarefy
tmp %>%
select(-one_of(c(scale1,splev))) %>%
rarefy(minrec) %>%
data.frame(Gammar=.) %>%
mutate(group=focaldisp,Gammar=round(Gammar,digits=2),
Archip=tmp[,scale1]) ->tmp.rar
group.rar<-rbind(tmp.rar,group.rar)
}
}
if(is.null(scale3)=="FALSE"){
# Plot-level Alpha diversity
disp.l<-as.character(unique(dplyr::pull(indf,splev)))
group.rar<-NULL
for (focaldisp in disp.l){
indf[indf[,splev] %in% focaldisp,] ->tmp
# Archipelago-level scale
scale1.l<-as.character(unique(dplyr::pull(tmp,scale1)))
for (archip in scale1.l){
tmp[tmp[,scale1] %in% archip,] ->tmp1
# Island-level scale
scale2.l<-as.character(unique(dplyr::pull(tmp1,scale2)))
for (island in scale2.l){
tmp1[tmp1[,scale2] %in% island,] ->tmp2
# minimum abundance
tmp2 %>%
select(-one_of(c(scale1,scale2,scale3,splev))) %>%
rowSums() ->rs
rs1<-min(rs)
# rarefied richness
tmp2 %>%
select(-one_of(c(scale1,scale2,scale3,splev))) %>%
rarefy(rs1) %>%
as.numeric() ->rafrich
alpha.df<-data.frame(Alphar=rafrich,Archip=archip,group=focaldisp,Island=island)
group.rar<-rbind(alpha.df,group.rar)
}
}
}
}
return(group.rar)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.