Generar matriz de ceros y unos a partir de variables categóricas

por | Jun 19, 2018 | R | 0 Comentarios

Ejemplo de como generar una matriz de ceros y unoslogo-r

Se muestra un ejemplo de como generar una matriz de ceros y unos a partir de variables categóricas y para ello se siguen los siguientes pasos

Crear la matriz de ejemplo

id <- c(1,4,3,2,7,6,9,5,0,8)
texto <- c("A", "B", "A", "D","A","B","B","B","C","D")
valor <- c(2,8,7,5,1,9,4,3,7,2)
df <- data.frame(id=id,texto=texto,valor=valor)

Generar tabla de frecuencias

library("agricolae")
 aux <- table.freq( hist(df$valor, plot=FALSE) )
frec <- data.frame(min= aux$Lower,
 max=aux$Upper,
 rango= paste(aux$Lower, aux$Upper,sep = "-"),
 frec= aux$Frequency
 )

Generar las nuevas categorías

df$categoria <- cut(df$valor,
 breaks=c(frec$min, Inf),
 labels=c(as.character(frec$rango))
 )
 library("dplyr")
 df.cat <- select(df
 , texto
 , categoria
 )

# Generar matriz de ceros y unos

df.cat.matrix <- model.matrix(~.-1, data=df.cat)
df.cat.matrix
   textoA textoB textoC textoD categoria2-4 categoria4-6 categoria6-8 categoria8-10
1       1      0      0      0            0            0            0             0
2       0      1      0      0            0            0            1             0
3       1      0      0      0            0            0            1             0
4       0      0      0      1            0            1            0             0
5       1      0      0      0            0            0            0             0
6       0      1      0      0            0            0            0             1
7       0      1      0      0            1            0            0             0
8       0      1      0      0            1            0            0             0
9       0      0      1      0            0            0            1             0
10      0      0      0      1            0            0            0             0

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *