Hola José Luis,

Gracias por el ejemplo.  Intenta lo siguiente:

d <- datos[, -1]
p <- t(apply(d, 1, function(x){
 r <- colnames(d)[x == 1][1:ncol(d)]
 r[is.na(r)] <- 0
 r
}))
cbind(d, p)
#var1 var2 var3 var4    1    2    3 4
#1    0    1    1    1 var2 var3 var4 0
#2    0    1    1    1 var2 var3 var4 0
#3    0    0    0    0    0    0    0 0
#4    1    0    0    0 var1    0    0 0
#5    1    1    0    0 var1 var2    0 0

Saludos,
Jorge.-



2014-04-11 20:54 GMT+10:00 José Luis Cañadas Reche <canadasreche@gmail.com>:

> 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@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]

