[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