[R-es] Creación de data frame

Fernando Arce fernand_arce en yahoo.es
Vie Sep 15 06:18:55 CEST 2017


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

________________________________
De: R-help-es <r-help-es-bounces en r-project.org> en nombre de Andres Hirigoyen <andreshirigoyen en gmail.com>
Enviado: jueves, 14 de septiembre de 2017 10:13:37 a. m.
Para: Javier Marcuzzi
CC: Lista R
Asunto: Re: [R-es] Creaci�n de data frame

Hola Javier, gracias por tu respuesta, explico de nuevo.

Luego de varios calculos, llego a un dataframe con varias observaciones,
llamado resuu:

Letra Suelo result
1 a 2 23
2 b 2 15
3 c 2 36
4 a 3 20
5 b 3 2
6 c 3 36
7 a 2 32
8 b 2 25
9 c 3 32
...
La primer columna que no tiene cabecera o etiqueta, aparece en la consola
en color gris y es un identificador de las filas

Cuando  quiero resumir, usando

 resu<-with(resuu data.frame( ,
                                Letra=unique(Letra),
                              Suelo=unique(Suelo),
                              ha= tapply(resulr,Suelo,sum)))

El  nuevo dataframe tiene como identificador de filas los valores de la
variable LETRAS:

Letra Suelo ha
a b 2 145
b c 2 456
c a 3 60
Si quiero hacer algo con ese nuevo  dataframe, agrupar por la variable
Letra, etc. se confunde porque toma como valor de "a", "b" o "c" el
identificador y no la variable LETRAS.

Mi pregunta es como cambiar el identificado de las filas a num�rico o como
evitar q pase lo que explique arriba..

Gracias


El 14 de septiembre de 2017, 10:11, Javier Marcuzzi<
javier.ruben.marcuzzi en gmail.com> escribi�:

> Estimado Andr�s Hirigoyen
>
>
>
> Mi respuesta tiene dos partes, la primera es que no se comprende o por lo
> menos en mi caso, desde donde viene el problema con el c�digo que publica,
> la segunda parte es suponiendo que todo estar�a correcto menos el
> data.frame, yo crear�a un nuevo data.frame solo con las columnas que deseo,
> luego uso el c�digo de resumen, y puedo borrar el Segundo data.frame.
>
>
>
> Otra forma es tomar cualquier ejemplo publicado o c�digo propio que
> funcione y reemplazar los datos, el cometer un error de tipeo es muy f�cil
> y dif�cil de encontrar.
>
>
>
> Disculpas por errors idiom�ticos, esta cosa me est� pasando del espa�ol al
> ingl�s en forma autom�tica.
>
>
>
> Javier Rub�n Marcuzzi
>
>
>
> *De: *Andres Hirigoyen <andreshirigoyen en gmail.com>
> *Enviado: *martes, 12 de septiembre de 2017 15:27
> *Para: *Lista R <r-help-es en r-project.org>
> *Asunto: *[R-es] Creaci�n de data frame
>
>
>
> Buenos dias, tengo una consulta con la creaci�n de un nuevo data frame. La
>
> primer columna, que no forma parte del data frame, toma los valores de la
>
> variable LETRA lo cual no me permite luego seguir haciendo procedimentos ya
>
> q no ordena. Va ejemplo
>
>
>
> Parto de un data frame (llamado resu),  con las variables Letra, Suelo y
>
> ha, quiero hacer uno nuevo que resuma las hect�reas (ha) por Letra.
>
>
>
>
>
> resu<-with(resuu data.frame( ,
>
>                                Letra=unique(Letra),
>
>                                Suelo=unique(Suelo),
>
>                                ha= tapply(resulr,Suelo,sum)))
>
> Resultado:
>
>
>
>        Letra  Suelo  ha
>
> a      b          2        145
>
> b      c          2        456
>
> c      a          2        60
>
>
>
>
>
> Esa primer columna deber�a de estar numerada de forma l�gica de 1 a 3 por
>
> ejemplo. Ya intente cambiando el orden de las variables, Suelo y Letra,
>
> pero el resultado es el mismo.
>
>
>
> Espero haber sido claro, gracias por la ayuda
>
>
>
>                [[alternative HTML version deleted]]
>
>
>
> _______________________________________________
>
> R-help-es mailing list
>
> R-help-es en r-project.org
>
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>



--
*Andr�s Hirigoyen*
* Prof. Ciencias Biol�gicas*
*Ing. Agr. Forestal (MSC) *

        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

    [[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en 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