[R-es] Completar un for, que falla al faltarle algún dato.
Javier Marcuzzi
j@vier@ruben@m@rcuzzi @ending from gm@il@com
Dom Jul 8 03:11:15 CEST 2018
Estimado Juan Abasolo
Creo que no es problema de R, es de su lógica porque se confundió al
explicarnos, le explico en sus datos:
Si realizo en mi computadora escribo lo siguiente a partir de su código:
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)
}
}
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)
}
}
Obtengo estos resultados:
df.raw Ques Info Answ
1 Q1 aca casa
2 Q1 ahi bulo
3 Q1 alla hogar
4 Q2 aca mama
5 Q2 ahi mami
6 Q2 alla vieja
7 Q3 aca perro
8 Q3 ahi can
9 Q3 alla rope> df.raw1 Ques Info Answ
1 Q1 aca casa
3 Q1 alla hogar
4 Q2 aca mama
5 Q2 ahi mami
6 Q2 alla vieja
7 Q3 aca perro
8 Q3 ahi can
9 Q3 alla rope
Ahora observe en df.raw1, en el "indice 2", no lo encontrará porque pasa de
1 a 3, usted al querer explicarnos su problema ha eliminado el valor al
ordenar
df.raw1 <- df.raw[-2,]
La ayuda de Carlos Ortega es correcta, pero posiblemente si los datos son
reales y no inventados en código como en su ejemplo, ese error lógico no
aparece porque serían NA.
Javier Rubén Marcuzzi
El sáb., 7 jul. 2018 a las 20:54, Carlos Ortega (<cof using qualityexcellence.es>)
escribió:
> 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
>
> [[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
>
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es