[R-es] crear variable en base a nombre de columnas que tienen un 1
Carlos J. Gil Bellosta
cgb en datanalytics.com
Vie Abr 11 13:49:24 CEST 2014
¿Algo así?
var1 <- c(rep(0,3),rep(1,2))
var2 <- c(rep(1,2),0,0,1)
var3 <- c(rep(1,2),rep(0,3))
var4 <- c(rep(1,2),rep(0,3))
datos <- data.frame(fila=1:5,var1, var2, var3, var4)
library(reshape2)
tmp <- melt(datos, id.vars="fila")
tmp$uno <- as.character(tmp$variable)
tmp$uno[tmp$value != 1] <- "0"
res <- dcast(tmp, fila ~ variable, value.var = "value")
res <- dcast(tmp, fila ~ variable, value.var = "uno")
Igual simplemente quieres trabajar con los datos en columna.
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
El día 11 de abril de 2014, 12:54, José Luis Cañadas Reche
<canadasreche en gmail.com> escribió:
> Buenos días.
>
> Hoy ando un poco (o bastante) espeso y no doy con la tecla de una cosa que
> seguro que es muy simple..
>
> Pongo un ejemplo.
>
> var1 <- c(rep(0,3),rep(1,2))
> var2 <- c(rep(1,2),0,0,1)
> var3 <- c(rep(1,2),rep(0,3))
> var4 <- c(rep(1,2),rep(0,3))
> datos <- data.frame(fila=1:5,var1, var2, var3, var4)
>
> datos
> datos
> fila var1 var2 var3 var4
> 1 1 0 1 1 1
> 2 2 0 1 1 1
> 3 3 0 0 0 0
> 4 4 1 0 0 0
> 5 5 1 1 0 0
>
> El caso es que quiero crear 3 variables nuevas p1, p2 y p3 de forma que p1
> recoja el nombre de la primera variables dónde hay un 1 .
>
> Se quedaría
>
> datos
> fila var1 var2 var3 var4 p1 p2 p3
> 1 1 0 1 1 1 var2 var3 var4
> 2 2 0 1 1 1 var2 var3 var4
> 3 3 0 0 0 0 0 0 0
> 4 4 1 0 0 0 var1 0 0
> 5 5 1 1 0 0 var1 var2 0
>
>
> El caso es que no puedo haber más de 3 respuestas. En mis datos reales tengo
> más de 600 variables de tipo 0,1 , pero nadie ha contestado más de 3
> respuestas.
> ¿cómo podría asignar a p1, p2 y p3 el nombre de las variables dónde hay un
> 1?
>
> alguna idea?
>
> Saludos.
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
Más información sobre la lista de distribución R-help-es