#' Function for fixing species names in dataset
#'
#' @ spnames = column containing species binomial names
#' @ island = column containing the island names
#' @ indf = name of input dataframe
#'
fixspnames<-function(spnames,island,indf){
results<-NULL
indf<-as.data.frame(indf)
# list of islands
isl.l<-unique(indf[,island])
# loop through dataset
for (i in 1:length(isl.l)){
cat(paste("Island...",i,sep=""))
cat("\n")
# data for one island
tmp<-indf[indf[,island] %in% isl.l[i],]
# list of species
sp.l<-unique(tmp$Species)
for (y in 1:length(sp.l)){
tmp2<-subset(tmp,Species==sp.l[y])
tmp3<-stri_split_fixed(tmp2$Species," ",simplify=TRUE)
# fix names containing cf or cf.
if(unique(tmp3[,2])=="cf" | unique(tmp3[,2])=="cf."){
tmp2$Species<-paste(tmp3[,1],tmp3[,2],tmp3[,3],sep="_")
}
# fix names containing sp. or sp
if(dim(tmp3)[2] < 3){
if(unique(tmp3[,2])=="sp" | unique(tmp3[,2])=="sp." | unique(tmp3[,2])=="n.sp."){
tmp2$Species<-tmp2$MF
}
}
if(dim(tmp3)[2] > 2){
if(unique(tmp3[,2])=="sp" | unique(tmp3[,2])=="sp." | unique(tmp3[,2])=="n.sp."|
unique(tmp3[,3])=="sp"| unique(tmp3[,3])=="sp." | unique(tmp3[,3])=="n.sp."){
tmp2$Species<-tmp2$MF
}
}
# fix names containing other things
if(unique(tmp3[,2])=="nsp" | unique(tmp3[,2])=="sp6" | unique(tmp3[,2])=="sp12" |
unique(tmp3[,2])=="sp3" | unique(tmp3[,2])=="sp7"){
tmp2$Species<-tmp2$MF
}
# fix names with author
autdf<-stri_split_fixed(tmp2$Species," ",simplify=TRUE)
if(dim(autdf)[2] > 1){
tmp2$Species<-paste(autdf[,1],autdf[,2],sep="_")
}
results<-rbind(tmp2,results)
} # end y loop
} # end of i loop
results$Species<-stri_replace_all_fixed(results$Species,"cf._","cf_")
return(results)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.