David Kikuchi
2012-Jan-13 21:51 UTC
[R] Change state names to abbreviations in an irregular list of names, abbreviations, null values, and foreign provinces
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 } }
David Kikuchi
2012-Jan-13 21:52 UTC
[R] Change state names to abbreviations in an irregular list of names, abbreviations, null values, and foreign provinces
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 } }