Tengo un archivo grande con un estado variable que tiene el nombre de estado completo. Me gustaría reemplazarlo con las abreviaturas del estado (que es "NY" para "Nueva York"). ¿Hay una manera fácil de hacer esto (aparte de usar varios comandos if-else)? ¿Puede estar usando la declaración "reemplazar"? Gracias.Nombre del estado abreviado en R
Respuesta
1)grep
el nombre completo de state.name
y el uso que para indexar en state.abb
:
state.abb[grep("New York", state.name)]
## [1] "NY"
2) o crear un vector de abreviaturas de los estados cuyos nombres son los nombres completos y el índice con el nombre completo:
setNames(state.abb, state.name)["New York"]
## New York
## "NY"
A diferencia de (1), este funciona incluso si "Nueva York" se reemplaza por un vector de nombres de estado completo, p. setNames(state.abb, state.name)[c("New York", "Idaho")]
R tiene dos constantes integradas que pueden ayudar: state.abb
con las abreviaturas, y state.name
con los nombres completos. Este es un ejemplo de uso simple:
> x <- c("New York", "Virginia")
> state.abb[match(x,state.name)]
[1] "NY" "VA"
Muchas gracias. Esto me ahorró 30 minutos de escribir 50 declaraciones de if-else en R. – user227290
@ user227290: si pensabas en ifelse, podría ser inteligente mirar '? Switch' Nunca se sabe cuándo podría ser útil en el futuro. –
Suponiendo que Washington DC tiene el formato 'Distrito de Columbia', creo que 'c (state.abb, 'DC') [match (x, c (state.name, 'District of Columbia'))]' también funciona – sbha
Encontré que el state.name y el state.abb integrados solo tienen 50 estados. Obtuve una tabla más grande (incluyendo DC, etc.) en línea (por ejemplo, este enlace: http://www.infoplease.com/ipa/A0110468.html) y la pegué en un archivo .csv llamado States.csv. Luego cargo estados y abbr. de este archivo en lugar de usar el built-in. El resto es bastante similar a @Aniko 's
library(dplyr)
library(stringr)
library(stringdist)
setwd()
# load data
data = c("NY", "New York", "NewYork")
data = toupper(data)
# load state name and abbr.
State.data = read.csv('States.csv')
State = toupper(State.data$State)
Stateabb = as.vector(State.data$Abb)
# match data with state names, misspell of 1 letter is allowed
match = amatch(data, State, maxDist=1)
data[ !is.na(match) ] = Stateabb[ na.omit(match) ]
Hay una pequeña diferencia entre partido y amatch en forma de calcular la distancia de una palabra a otra. Ver P25-26 aquí http://cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf
- 1. cómo obtener el nombre abreviado de TimeZoneInfo
- 2. Nombre del tipo de patrón: R a b = Q (a -> (R a b, b))
- 3. ¿Cómo puedo determinar el nombre del directorio actual en R?
- 4. Método abreviado del teclado para abrir Google Chrome en Mac
- 5. Imagen del editor de WordPress para el código abreviado
- 6. que muestra un mensaje de estado en R
- 7. Restricciones de nombre de variable en R
- 8. Formateo de un DateTime en un mes abreviado en inglés
- 9. Estado del usuario en Parsec
- 10. Obtención del estado del sistema en python
- 11. Método abreviado del teclado para alternar entre prueba y clase en eclipse?
- 12. Cómo obtener el nombre abreviado de día en la semana (Mo/Tu/We/Th ...)
- 13. Cadena de fecha y hora de análisis con nombre abreviado de zona horaria en Python?
- 14. Refactorización del código R con ESS/R
- 15. CLPlacemark - ¿Abreviaciones del estado?
- 16. Elipsis (texto abreviado) con JSP/EL
- 17. Colorize nombre de archivo según estado svn
- 18. Método abreviado del teclado para navegar a través de pantallas en las propiedades del proyecto VS?
- 19. Método abreviado del teclado para enviar la confirmación del código en xcode4?
- 20. Identidad del objeto R
- 21. R: uso del factor
- 22. Dependencias del paquete R
- 23. ¿Cómo determina Windows/maneja el nombre abreviado de DOS de cualquier archivo dado?
- 24. Cambiar el nombre del nombre del argumento en JAX-WS
- 25. ¿Cuál es la diferencia entre 'estado' y 'estado' en el nombre de la función?
- 26. nombre del modelo al nombre del controlador
- 27. Estado del arte en reconocimiento facial
- 28. Estado del soporte D en iOS
- 29. Administración del estado en ASP.NET MVC
- 30. Códigos de estado del shell en make
este trabajo cuando el primer argumento de grep es un vector de cadena? – user227290
No, en ese caso use 'match' en lugar de' grep' como lo sugiere Aniko o intente 'setNames (state.abb, state.name) [c (" New York "," Idaho ")]'. –
Gracias, aclara el problema. – user227290