Skip to content
Prev 11929 / 15380 Next

[R-es] Creación de data frame

No acabo de ver el motivo del problema, creo haber entendido que el nombre de las filas esta tomado de la columna letra? No es posible, puesto que tus letras tienen que estar 'repetidas' ya que estas agregando y sumando...
He probado esto y ha funcionado
## minireplica de tus datosd <- data.frame(Letra=c('a','b','c','a','b','c','a','b','c'),Suelo=c(2,2,2,3,3,3,2,2,3),result=c(23,15,36,20,2,36,32,25,32))


## calculamos la tabla de contingencia (los margenes van definidos por el orden de la lista, si quieres cambiar como se agregan, cambia de orden los dos elementos de la lista)tabla <- tapply(d$result,list(d$Letra,d$Suelo),sum, simplify=TRUE)## la damos formato de tabla (trae predefinido formato matriz y necesitamos formato de tabla para expandirla con as.data.frame)class(tabla) <- 'table'## y expandimos (despuestendrias que renombrar las columnas)final <- as.data.frame(tabla)
Los identificadores de las columnas no deberian darte guerra asi.
Tambien puedes hacerlo con dos lazos, que tambien te evitaria eso que comentas:
letra <- NULLSuelo <- NULLha <- NULLfor (i in unique(d$Letra)){    for(j in unique(d$Suelo)){        letra <- c(letra,i)        Suelo <- c(Suelo,j)        tmp.sum <- sum(d$result[d$Letra==i & d$Suelo==j])        ha <- c(ha,tmp.sum)    }}out <- data.frame(letra=letra, Suelo=Suelo, ha=ha)

Saludos y espero que te sirva
Fer 

    El Viernes 15 de septiembre de 2017 1:44, Javier Nieto <mac_javi en hotmail.com> escribió:
 

 Hola


prueba: rownames(resu) <- NULL


Saludos