R/fixspnames.R

#' 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)
}
drmarcogir/Rmacdiv documentation built on May 15, 2019, 12:58 p.m.