[R-es] comportamiento de data.table al hacer calculos por grupos

Freddy Omar López Quintero freddy.vate01 en gmail.com
Vie Mayo 15 01:03:25 CEST 2015


Holap.

Reproduje tu ejemplo y ciertamente las filas se duplican innecesariamente.
No supe cómo corregir este comportamiento. Si no se pudiera arreglar esto,
por favor considera la librería sqldf y obtendrás el resultado correcto:

>sqldf("select sol, dia, con, avg(media) as ave from dd group by sol, dia,
con")
   sol dia con       ave
1  con   1   0 -29.37000
2  con   2   0 -31.65000
3  con   3   0 -28.25000
...

donde dd es tu conjunto de datos.

Salud.

2015-05-14 20:00 GMT-03:00 eric <ericconchamunoz en gmail.com>:

> Estimada comunidad tengo un problema del que no encuentro datos que me
> ayuden mucho en la web.
>
> Estoy haciendo calculos por grupos con data,table. Tengo un archivo
> (zp.res) con tres columnas que clasifican los datos (sol, con, dia)  y una
> columna de datos numericos (media), de la siguiente forma:
>
>      sol con dia media
>   1: con   0   1 -22.6
>   2: con   0   1 -36.6
>   3: con   0   1 -35.6
>
> y quiero calcular el promedio de "media" (la col 4) agrupando con las
> variables sol,con,dia. Lo hago de la siguiente forma:
>
> med <- zp.res[, mean(media), by="sol,dia,con"]
>
> cuando reviso "med" esta todo bien, se han calculado las medias y el
> objeto tiene solo las filas que corresponden a los promedios con sus
> respectivas columnas sol,con,dia que los identifican. Pero como notaran por
> el codigo, la columna con el resultado no tiene un nombre asi es que R la
> bautiza como V1. Quise ponele un nombre y agregue este al codigo de la
> siguiente forma:
>
> med <- zp.res[, "ave":=mean(media), by="sol,dia,con"]
>
> el problema es que ahora el objeto med tiene el mismo numero de filas que
> zp.res y repite el promedio para cada dato dentro del grupo obtenido con
> by="sol,dia,con". Esto no me sirve pues tengo que graficar los promedios ...
>
> mmmmm puede que mi explicacion sea algo confusa, espero que me entiendan.
>
> Encontre que luego puedo renombrar la columna, pero no lo quiero hacer,
> pues pienso que deberia ser estandar poder ponerle el nombre y que se
> construya bien el objeto con los promedios inmediatamente. Ademas el
> promedio es solo uno de los calculos que debo hacer y los otros tambien
> quedan con el nombre V1 en la mismo data.table.
>
> Alguna idea de como hacerlo ?
>
> Adjunto archivo con datos.
>
> Saludos y gracias, eric.
>
>
>
>
>
> --
> Forest Engineer
> Master in Environmental and Natural Resource Economics
> Ph.D. student in Sciences of Natural Resources at La Frontera University
> Member in AguaDeTemu2030, citizen movement for Temuco with green city
> standards for living
>
> Nota: Las tildes se han omitido para asegurar compatibilidad con algunos
> lectores de correo.
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>


-- 
«No soy aquellas sombras tutelares
que honré con versos que no olvida el tiempo.»

JL Borges

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es