Juan Abasolo
2018-07-07 22:25:03 UTC
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]]
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]]