[R-es] sumarizar
Oscar Perpiñan Lamigueiro
oscar.perpinan en upm.es
Jue Ene 19 23:40:39 CET 2012
Hola,
Te propongo una solución con zoo:
library(zoo)
## construyo un data.frame de ejemplo
EUR.resto <- data.frame(date=seq(as.Date('2009-01-01'),
as.Date('2011-12-31'), by='day'),
moneda1=rnorm(3*365), moneda2=rnorm(3*365),
moneda3=rnorm(3*365))
## y lo convierto a zoo (elimino la columna de fechas de los datos)
EURz <- zoo(EUR.resto[,-1],EUR.resto$date)
## Primero un "agregado" (por defecto la media) agrupando por mes-año
## usando el método aggregate para objetos zoo
EURyearmon <- aggregate(EURz, by=as.yearmon)
## Para calcular medias sólo mensuales o sólo anuales
## hay que definir primero un par de funciones sencillas
month <- function(x) as.numeric(format(x, "%m"))
year <- function(x) as.numeric(format(x, "%Y"))
## y después pasarlas a aggregate:
EURmon <- aggregate(EURz, by=month)
EURyear <- aggregate(EURz, by=year)
Saludos.
Oscar.
El Thu, 19 Jan 2012 22:26:27 +0100
"Otto F. Wagner" <ofwagner en gmail.com> escribió:
> *Hola!!! resulta que tengo unos datos de divisas ordenados por fechas
> (días) los que he convertido a formato tipo YYYY-MM-DD donde DD
> siempre es 01:*
> *
> *
> *
> EUR.resto$date<-as.Date(EUR.resto$date)
>
> EUR.resto$mo <- substr(EUR.resto$date,6,7)
> EUR.resto$yr <- substr(EUR.resto$date, 1,4)
>
>
> EUR.resto$month<-paste('01-',EUR.resto$mo,'-',EUR.resto$yr,sep='')
> EUR.resto$month<-as.Date(EUR.resto$month)
>
>
> ahora necesito agrupar mis datos por mes-años (01-mes-año) y obtener
> su valor medio. En SAS haría un proc summary donde obtendría una
> nueva tabla con menos registros ya que estarían agrupados por mes.
> Que función en R puedo usar equivalente a esta?
>
> Si uso: eur.agg<-aggregate(EUR.resto$Yenes.japoneses.por.Euro,
> by=list(EUR.resto$month),FUN=mean) me da error.
>
> Gracias por vuestra ayuda,
>
> un saludo,
>
> Otto
> *
>
> [[alternative HTML version deleted]]
>
Más información sobre la lista de distribución R-help-es