Hola

No es lo mismo pero en mi caso personal la forma que utilizo se basa en 
el ejemplo de http://cran.r-project.org/doc/contrib/grafi3.pdf página 
49, no usa el if pero también hay una condición para todos los verdaderos.

No intenté en este caso en particular, habría que ver si también da 
problemas, pero como Carlos Ortega que sabe mucho dio una solución y 
como vos estas empezando no quiero confundirte,

Javier Marcuzzi


El 26/02/14 12:49, Carlos Ortega escribió:
> Hola,
>
> No he encontrado la razón de que la explicación sea estrictamente la
> presencia de NAs.
> Por este contraejemplo:
>
>> val <- guaran[44,]
>> val
>     parc.      sp pap91 pap96 pap01  pap06 pap11   x  y
> 44   c.1 T.stans  *<NA>* nuevo    47 muerto  *<NA>* 149 52
>> ifelse(
> +                    val$sp=="L.lucidum" | val$pap11 == "muerto"
> +                  | val$pap06=="muerto" | val$pap01=="muerto"
> +                  | val$pap96=="muerto", 1, 0
> +                           )
> [1] *1* *#Devuelve bien el valor el ifelse a pesar de que hay NAs.*
>> val <- guaran[45,]
>> val
>     parc.       sp pap91 pap96 pap01 pap06 pap11   x  y
> 45   c.1 C.lilloi  *<NA>*  *<NA> *nuevo    54    53 159 42
>> ifelse(
> +                    val$sp=="L.lucidum" | val$pap11 == "muerto"
> +                  | val$pap06=="muerto" | val$pap01=="muerto"
> +                  | val$pap96=="muerto", 1, 0
> +                           )
> [1] *NA* *# Pero en este otro caso que debería ser "1" devuelve un "NA".*
>
> Al aplicar el "ifelse" es a partir de la fila 45 donde comienzan a aparecer
> los "NA", aunque en múltiples filas anteriores hay valores NA.
>
> Pero sí que es cierto que al quitar todos los NAs el problema se resuelve.
> El siguiente código quita los NA, aplica el ifelse creando la nueva columna
> y vuelve a darte a ponerte los NAs que tenías al principio....
>
> #-------------------------------------------------------------------------
> # Sustituyo los NA por ZZ
> guaran <- dat.in[,c(1:9)]
> for (i in 1:dim(guaran)[2]) {
>      guaran[is.na(guaran[,i]),i] <- c("ZZ")
> }
> #head(guaran,25)
>
> #Compruebo que funciona el ifelse
> guaran$datmatriz <- ifelse(
>                     guaran$sp == "L.lucidum" | guaran$pap11 == "muerto"
>                   | guaran$pap06 == "muerto" | guaran$pap01 == "muerto"
>                   | guaran$pap96 == "muerto", 1, 0
>                            )
> #head(guaran,50)
>
> #Devuelvo el data.frame al estado original
> # Pero con la columna del ifelse ya añadida y evaluada
> for (i in 1:dim(guaran)[2]) {
>      guaran[guaran[,i]=="ZZ",i] <- NA
> }
>
> #head(guaran,50)
> #-------------------------------------------------------------------------
>
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
>
> El 26 de febrero de 2014, 15:23, Priscila Ana Powell <
> priscilaapowell@gmail.com> escribió:
>
>> Hola gente!! Estoy empezando a trabajar con R, y no puedo resolver lo
>> siguiente:
>>
>> Quiero crear una nueva variable (datmatriz) que toma el valor de 1 si:
>> -la variable sp es igual a L.lucidum
>> -alguna de las variables pap11, pap06, pap01, pap96 es igual a muerto.
>>
>> El script que utilicé es :
>>
>> guaran$datmatriz<-ifelse (guaran$sp=="L.lucidum"|guaran$pap11 ==
>> "muerto"|guaran$pap06=="muerto"|guaran$pap01=="muerto"|guaran$pap96=="muerto",
>> 1, 0)
>>
>> Sin embargo, al observar datmatriz, tengo 0, 1 y NA, que no sé que los
>> genera.
>>
>> Alguna idea para salvar el inconveniente?
>>
>> adjunto la matriz
>>
>> desde ya, muchas gracias!!
>>
>>
>> saludos !
>>
>> Priscila
>> --
>>   Priscila Ana Powell
>> Instituto de Ecología Regional
>> Facultad de Ciencias Naturales e Instituto Miguel Lillo
>> Universidad Nacional de Tucumán
>> Argentina
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


	[[alternative HTML version deleted]]

