Tengo 30 columnas de datos cualitativos que quiero transformar en datos cuantitativos.

En primer lugar, quiero averiguar qué valores están almacenados en cada columna y luego reemplazar cada instancia de este valor con un número. Puedo usar table () o summary () para obtener una tabla de frecuencias para cada valor de datos, pero luego no puedo acceder a estos valores; solo puedo obtener las frecuencias que no me importan. También he analizado unique () y duplicated () en vano.

Por ejemplo, para la primera columna tengo 10.000 filas que contienen "dummy1", "dummy2", "dummy3", "dummy4" o "dummy5". Quiero reemplazar estos valores con 1, 2, 3, 4 o 5 respectivamente.

La tabla (datos) me da un resumen de la frecuencia de cada valor cualitativo, pero no puedo aislar los valores "dummy1", etc. en una variable (que luego compararé para reemplazar). Como tengo 30 columnas de datos, no quiero codificar estos valores ficticios. Unique () solo da el valor único pero quiero una lista de cada valor posible.

Cualquier ayuda sería muy apreciada.

r
0
JaneDoe 21 mar. 2017 a las 23:00

2 respuestas

La mejor respuesta

Intente usar which () para encontrar los índices de cada expresión que desea convertir. El siguiente ejemplo debería ser suficiente para comenzar. Puede ampliar esta idea a todo el conjunto de datos con un bucle o una declaración funcional:

a <- c("dummy1", "dummy1", "dummy2", "dummy1", "dummy3")
df <- data.frame(a=a, b=a, stringsAsFactors = FALSE)
print(df)
index <- which(df[1]=="dummy1")
df[index, 1] = 3
print(df)


> print(df)
       a      b
1 dummy1 dummy1
2 dummy1 dummy1
3 dummy2 dummy2
4 dummy1 dummy1
5 dummy3 dummy3
> index <- which(df[1]=="dummy1")
> df[index, 1] = 3
> print(df)
       a      b
1      3 dummy1
2      3 dummy1
3 dummy2 dummy2
4      3 dummy1
5 dummy3 dummy3
0
DBD 21 mar. 2017 a las 21:05

Mi problema era que no quería codificar "dummy1". No sé cuáles son las categorías en cada columna y tengo 30 columnas. Me encontré con lo que estaba buscando en otra pregunta ... niveles (como.factor (dataCol)). Esto me da una lista de las categorías en la columna "dataCol".

Sin embargo, su código es lo que necesitaré para el siguiente paso, así que muchas gracias.

0
JaneDoe 22 mar. 2017 a las 18:33