[R-es] crear variable en base a nombre de columnas que tienen un 1
Marcelino de la Cruz
marcelino.delacruz en upm.es
Vie Abr 11 14:24:11 CEST 2014
Otra versión, en una sola línea:
> datos=cbind(datos,t(apply(datos,1, function(x)
{v=names(datos)[which(x[-1]==1)+1];return(c(v, rep(0, 3-length(v))))})))
> datos
fila var1 var2 var3 var4 1 2 3
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 11/04/2014 13:59, Jorge I Velez escribió:
> 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 en 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 en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
> [[alternative HTML version deleted]]
>
>
>
> _______________________________________________
> 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