[R-es] Completar un for, que falla al faltarle algún dato.

Juan Abasolo ju@n@@b@@olo @ending from ehu@eu@
Dom Jul 8 15:33:45 CEST 2018


Muchas gracias, Carlos y Javier.
La solución a como yo estaba entendiendo el problema es la que me dió
Carlos. Me queda ahora por resolver alguna cuestión de valores dobles que
encuentro en mi data.frame de verdad. Pero ya estoy bien cerquita!

Muchas gRacias!

2018-07-08 1:54 GMT+02:00 Carlos Ortega <cof using qualityexcellence.es>:

> Hola,
>
> Aparece un problema porque en en el primer subset (sdf) hay algunos
> valores de K que no existen.
> Una forma de "protegerse" es esta, incluyendo un "NA" cuando eso ocurre...
>
>
>
> for (j in J){
>   print(j)
>   sdf <- subset(df.raw1, df.raw1$Ques==j)
>   for(k in K){
>     print(k)
>     x <- sdf[which(sdf$Info==k), "Answ"]
>
>
> * if(length(x) == 0) {       df.ok[k, j ] <- "NA"    } else { df.ok[k,j]
> <- as.character(x) }*
>   }
> }
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El 8 de julio de 2018, 0:25, Juan Abasolo <juan.abasolo using ehu.eus> escribió:
>
>> Buenas noches;
>> Además del proyecto que comenté antes y con el que sigo discutiendo,
>> también me estoy peleando con otro... con el que también tropiezo.
>>
>> Necesito reordenar los datos presentados en dos columnas a filas y
>> columnas.
>>
>> Los datos ideales serían algo así:
>>
>> Ques <- c(rep("Q1",3),rep("Q2",3),rep("Q3",3))
>> Info <- rep(c("aca", "ahi", "alla"),3)
>> Answ <- c("casa", "bulo", "hogar", "mama", "mami", "vieja", "perro",
>> "can",
>> "rope")
>>
>> df.raw <- data.frame(ID, Ques, Info, Answ)
>>
>>
>> Pero, como no son ideales, se parecen a esto:
>>
>> df.raw1 <- df.raw[-2,]
>>
>> # Necesito un dataframe con una estructura así:
>>
>> df.ok <- data.frame(matrix(ncol = length(levels(df.raw$Ques)), nrow =
>> length(levels(df.raw$Info))))
>>
>> names(df.ok) <- levels(df.raw$Ques)
>> rownames(df.ok) <- levels(df.raw$Info)
>>
>> # que incluya los datos de 'Answ' en donde correspondería
>>
>> J <- levels(df.raw$Ques)
>> K <- levels(df.raw$Info)
>>
>> # El ideal me queda resuelto con esto:
>>
>> for (j in J){
>>         sdf <- subset(df.raw, df.raw$Ques==j)
>>         for(k in K){
>>                 x <- sdf[which(sdf$Info==k), "Answ"]
>>                 df.ok[k,j] <- as.character(x)
>>         }
>> }
>>
>> Pero si en la segunda linea sustituyo df.raw por df.raw1
>>
>> for (j in J){
>>         sdf <- subset(df.raw1, df.raw1$Ques==j)
>>         for(k in K){
>>                 x <- sdf[which(sdf$Info==k), "Answ"]
>>                 df.ok[k,j] <- as.character(x)
>>         }
>> }
>>
>> , ahí me da error.
>>
>> ¿Hay alguna forma de que asigne "" o NA o algo a quitar luego? O packete
>> que haga el trabajo u orden para salvar lo que venía haciendo yo?
>>
>> Presupongo que será otra de esas respuestas evidentes, y disculpen lo
>> largo
>> de la exposición.
>>
>> Desde ya, muchas gracias
>>
>> --
>> Juan Abasolo
>>
>> Hizkuntzaren eta Literaturaren Didaktika Saila
>> Bilboko Hezkuntza Fakultatea
>> Euskal Herriko Unibertsitatea
>> UPV/EHU
>>
>> Sarriena auzoa z/g
>> 48940 Leioa
>> Bizkaia
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es using r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>



-- 
Juan Abasolo

Hizkuntzaren eta Literaturaren Didaktika Saila
Bilboko Hezkuntza Fakultatea
Euskal Herriko Unibertsitatea
UPV/EHU

Sarriena auzoa z/g
48940 Leioa
Bizkaia

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es