Pregunta

Tengo el problema de que obtuve un archivo de datos de origen enorme que muestra texto para todos los valores variables en lugar de ID numéricos. Entonces, por ejemplo, me gustaría que el género variable codificado como 1 y 2 en lugar de "mujer" y "hombre" escrita. E igualmente lo mismo para otras 200 variables de las cuales algunas tienen hasta cientos de valores variables distintos.

Por lo tanto, hacer esto manualmente no es realmente una opción aquí.

¿Alguien podría señalarme una solución o insinuar dentro de R, SPSS o Python cómo puedo asignar ID numéricas a cada valor variable distinto?

Pensé que esto sería un problema que otras personas enfrentan con más frecuencia también, pero no he encontrado nada de este tipo en absoluto.

¡Gracias por cualquier ayuda!

¿Fue útil?

Solución

SPSS tiene un comando Autorecode que hará todo el trabajo con un comando. por ejemplo:

AUTORECODE vr1 to vr100 /into Kvr1 to Kvr100/PRINT.

Esto tomará las variables de texto VR1 a VR100 y las recodará en nuevas variables numéricas KVR1 a KVR100 en la que cada categoría textual en la variable anterior ahora se numera automáticamente en la nueva variable, con la categoría textual ahora utilizada como etiqueta de valor.
los PRINT Sub comandante le mostrará en la ventana de salida una lista de todos los códigos numéricos elegidos para categorías de texto en cada variable.
Tenga en cuenta: usando el TO La convención (como en "VR1 a VR100") solo funciona cuando las variables se ordenan consecutivamente en el archivo. Si no lo son, debes nombrarlos por separado.

Otros consejos

Puedes usar el preprocesamiento de Python Sklearn Etiqueta. Aquí hay algún código de ejemplo de esta página con mis comentarios:

# Make a Label Encoder instance
le = preprocessing.LabelEncoder()

# Show it the data it has to encode, so your column
le.fit(["paris", "paris", "tokyo", "amsterdam"])

# Get a ordered list of all classes it found
list(le.classes_)

# Transform a column/list
le.transform(["tokyo", "tokyo", "paris"]) 

# Transform encoding back to original
list(le.inverse_transform([2, 2, 1]))

En R convierte su valor categórico en un factor.

dfr$id = as.numeric(factor(dfr$mycolumn))

Licenciado bajo: CC-BY-SA con atribución
scroll top