[R] Change state names to abbreviations in an irregular list of names, abbreviations, null values, and foreign provinces

David Kikuchi dkikuchi at email.unc.edu
Fri Jan 13 22:52:04 CET 2012


I'm trying to create maps of reptile abundance in different states & 
counties using data from Herp.net, which provides lists of specimens 
with the places that they were found.  First I would like to parse the 
list by state using 2-letter abbreviations, since I'm focusing on 
certain regions.  To do this, I've been trying to create a vector 
(state2) that gives all state names as 2-letter abbreviations, using 
advice given on the thread: 
http://tolstoy.newcastle.edu.au/R/help/05/09/12136.html

However, the code provided there does not work when the original list 
includes null values and foreign provinces, like "Cusco." I've used an 
if statement to filter out null values, but names not on the list 
state.names still cause me to get the error "Error in if 
(grep(tener$State.Province[i], state.name) > 0) { :
   argument is of length zero" because grep(tener$State.Province[i], 
state.name) returns the value "integer(0)", rather than something 
friendly to an If statement.  Any thoughts on how to get around this?

Thanks,

David

state2 <- rep(NA,length(tener$State.Province))
for(i in 1:length(tener$Institution)){
     if(tener$State.Province[i] != ''){
         if(grep(tener$State.Province[i],state.name) > 0){
             state2[i] <- state.abb[grep(tener$State.Province[i], 
state.name)]
         }
         else{
              state2[i] <- NA
         }
     }
     else{
         state2[i] <- NA
     }
}



More information about the R-help mailing list