*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]]
Hola Otto, Seguramente con zoo y combinaciones de aggregate o tapply puedes hacer lo que necesitas, luego de haber utilizando substr() para crear un vector que contenga las duplas año-mes que necesitas. Otra alternativa que resulta un poco mas facil y "logica" es a traves de "lubridate". Dale una mirada al articulo en JSS: http://www.jstatsoft.org/v40/i03/paper Un saludo, Jorge.- 2012/1/19 Otto F. Wagner <>> *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]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Hola,
Con la librería sqldf es bastante inmediato:
Lines <- "DeployID Date.Time LocationQuality Latitude Longitude
STM05-1 2005/02/28 17:35 Good -35.562 177.158
STM05-1 2005/02/28 19:44 Good -35.487 177.129
STM05-1 2005/02/28 23:01 Unknown -35.399 177.064
STM05-1 2005/03/01 07:28 Unknown -34.978 177.268
STM05-1 2005/03/01 18:06 Poor -34.799 177.027
STM05-1 2005/03/01 18:47 Poor -34.85 177.059
STM05-2 2005/02/28 12:49 Good -35.928 177.328
STM05-2 2005/02/28 21:23 Poor -35.926 177.314
"
DF <- read.table(textConnection(Lines), skip = 1, as.is = TRUE,
col.names = c("Id", "Date", "Time",
"Quality", "Lat", "Long"))
> sqldf("select Date, avg(Lat), avg(Long) from DF group by Date")
Date avg(Lat) avg(Long)
1 2005/02/28 -35.66040 177.1986
2 2005/03/01 -34.87567 177.1180
>
Al margen queda el sinsentido de la media de una Longitud o Latitud... :-).
Saludos,
Carlos Ortega
www.qualityexcellence.es
Saludos,
Carlos Ortega
www.qualityexcellence
El 19 de enero de 2012 22:26, Otto F. Wagner <ofwagner@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]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
[[alternative HTML version deleted]]
Gracias a ambos!! El problema fue que aggregate no clasifica por variables tipo date, pero se convierte a string y va bien. Intenté el sqldf pero creo que me daba error por nombrar las tablas de la forma algo.algo. Un saludo El 19 de enero de 2012 23:00, Carlos Ortega <cof@qualityexcellence.es>escribió:> Hola, > > Con la librería sqldf es bastante inmediato: > > > Lines <- "DeployID Date.Time LocationQuality Latitude Longitude > STM05-1 2005/02/28 17:35 Good -35.562 177.158 > STM05-1 2005/02/28 19:44 Good -35.487 177.129 > STM05-1 2005/02/28 23:01 Unknown -35.399 177.064 > STM05-1 2005/03/01 07:28 Unknown -34.978 177.268 > STM05-1 2005/03/01 18:06 Poor -34.799 177.027 > STM05-1 2005/03/01 18:47 Poor -34.85 177.059 > STM05-2 2005/02/28 12:49 Good -35.928 177.328 > STM05-2 2005/02/28 21:23 Poor -35.926 177.314 > " > > DF <- read.table(textConnection(Lines), skip = 1, as.is = TRUE, > col.names = c("Id", "Date", "Time", "Quality", "Lat", "Long")) > > > sqldf("select Date, avg(Lat), avg(Long) from DF group by Date") Date avg(Lat) avg(Long) > 1 2005/02/28 -35.66040 177.1986 > 2 2005/03/01 -34.87567 177.1180 > > > > Al margen queda el sinsentido de la media de una Longitud o Latitud... :-). > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > Saludos, > Carlos Ortega > www.qualityexcellence > > El 19 de enero de 2012 22:26, Otto F. Wagner <ofwagner@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]] >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >[[alternative HTML version deleted]]
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]]
>
Hola! muchas gracias a Carlos, Jorge y Oscar. Al final tardé más de la
cuenta porque mis datos tenían valores NA. Tuve que usar la opción de
aggregate "na.rm=TRUE" para que al calcular la media saltara esos
valores y
los valores agregados no fueran NA.
Quiero compartir el código por si algún novato como yo se encuentra en
situación similar. Una pregunta: hay alguna forma en aggregate para que te
calcule dos funciones a la vez? por ejemplo Var y Mean.
Gracias y saludos!
El código:
divisasBE <- read.delim("~/investigacion/Divisas/divisasBE.txt",
dec=".")
# como hay datos nulos R los pasa a factor, luego debemos convertirlos a
numéricos
divisasBE$date<-as.Date(divisasBE$date)
#class(divisasBE$CHF)
divisasBE$USD <-as.numeric(as.character(divisasBE$USD))
divisasBE$JPY <-as.numeric(as.character(divisasBE$JPY))
divisasBE$CHF <-as.numeric(as.character(divisasBE$CHF))
divisasBE$GBP <-as.numeric(as.character(divisasBE$GBP))
divisasBE$SUK <-as.numeric(as.character(divisasBE$SUK))
divisasBE$DEK <-as.numeric(as.character(divisasBE$DEK))
divisasBE$NOK <-as.numeric(as.character(divisasBE$NOK))
divisasBE$AUD <-as.numeric(as.character(divisasBE$AUD))
divisasBE$CAD <-as.numeric(as.character(divisasBE$CAD))
divisasBE$NED <-as.numeric(as.character(divisasBE$NED))
divisasBE$SDR <-as.numeric(as.character(divisasBE$SDR))
divisasBE$CHP <-as.numeric(as.character(divisasBE$CHP))
divisasBE$CGK <-as.numeric(as.character(divisasBE$CGK))
divisasBE$HUF <-as.numeric(as.character(divisasBE$HUF))
divisasBE$POZ <-as.numeric(as.character(divisasBE$POZ))
divisasBE$ESK <-as.numeric(as.character(divisasBE$ESK))
divisasBE$ESC <-as.numeric(as.character(divisasBE$ESC))
divisasBE$ISK <-as.numeric(as.character(divisasBE$ISK))
divisasBE$LEL <-as.numeric(as.character(divisasBE$LEL))
divisasBE$RUL <-as.numeric(as.character(divisasBE$RUL))
divisasBE$BUL <-as.numeric(as.character(divisasBE$BUL))
divisasBE$INR <-as.numeric(as.character(divisasBE$INR))
divisasBE$TUL <-as.numeric(as.character(divisasBE$TUL))
divisasBE$LIL <-as.numeric(as.character(divisasBE$LIL))
divisasBE$HKD <-as.numeric(as.character(divisasBE$HKD))
divisasBE$SID <-as.numeric(as.character(divisasBE$SID))
divisasBE$SUR <-as.numeric(as.character(divisasBE$SUR))
divisasBE$SUW <-as.numeric(as.character(divisasBE$SUW))
divisasBE$CHY <-as.numeric(as.character(divisasBE$CHY))
divisasBE$CRK <-as.numeric(as.character(divisasBE$CRK))
divisasBE$INDR<-as.numeric(as.character(divisasBE$IND))
divisasBE$MAR <-as.numeric(as.character(divisasBE$MAR))
divisasBE$FIP <-as.numeric(as.character(divisasBE$FIP))
divisasBE$RUR <-as.numeric(as.character(divisasBE$RUR))
divisasBE$TEB <-as.numeric(as.character(divisasBE$TEB))
divisasBE$MEP <-as.numeric(as.character(divisasBE$MEP))
divisasBE$BRR <-as.numeric(as.character(divisasBE$BRR))
divisasBE$mo <- substr(divisasBE$date,6,7)
divisasBE$yr <- substr(divisasBE$date, 1,4)
divisasBE$month<-paste(''01-'',divisasBE$mo,''-'',divisasBE$yr,sep='''')
divisasBE$month<-as.Date(divisasBE$month, "%d-%m-%Y" )
#agregamos, para poder "vencer" los NA usamos na.rm=TRUE
eur.agg<-aggregate(divisasBE, by=list(divisasBE$month),FUN=mean,na.rm=TRUE)
eur.agg$date<-eur.agg$Group.1
eur.agg$Group.1<-NULL
eur.agg$mo<-NULL
eur.agg$yr<-NULL
eur.agg$month<-NULL
*
*
El 19 de enero de 2012 23:28, Otto F. Wagner <ofwagner@gmail.com>
escribió:
> Gracias a ambos!!
>
> El problema fue que aggregate no clasifica por variables tipo date, pero
> se convierte a string y va bien.
>
>
> Intenté el sqldf pero creo que me daba error por nombrar las tablas de la
> forma algo.algo.
>
> Un saludo
>
>
> El 19 de enero de 2012 23:00, Carlos Ortega
<cof@qualityexcellence.es>escribió:
>
> Hola,
>>
>> Con la librería sqldf es bastante inmediato:
>>
>>
>> Lines <- "DeployID Date.Time LocationQuality Latitude Longitude
>> STM05-1 2005/02/28 17:35 Good -35.562 177.158
>> STM05-1 2005/02/28 19:44 Good -35.487 177.129
>> STM05-1 2005/02/28 23:01 Unknown -35.399 177.064
>> STM05-1 2005/03/01 07:28 Unknown -34.978 177.268
>> STM05-1 2005/03/01 18:06 Poor -34.799 177.027
>> STM05-1 2005/03/01 18:47 Poor -34.85 177.059
>> STM05-2 2005/02/28 12:49 Good -35.928 177.328
>> STM05-2 2005/02/28 21:23 Poor -35.926 177.314
>> "
>>
>> DF <- read.table(textConnection(Lines), skip = 1, as.is = TRUE,
>> col.names = c("Id", "Date", "Time",
"Quality", "Lat", "Long"))
>>
>> > sqldf("select Date, avg(Lat), avg(Long) from DF group by
Date") Date avg(Lat) avg(Long)
>> 1 2005/02/28 -35.66040 177.1986
>> 2 2005/03/01 -34.87567 177.1180
>>
>> >
>> Al margen queda el sinsentido de la media de una Longitud o Latitud...
>> :-).
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence
>>
>> El 19 de enero de 2012 22:26, Otto F. Wagner
<ofwagner@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]]
>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es@r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>
[[alternative HTML version deleted]]
Hola Otto, SI, si es posible: bastaria con crear una funcion que lo hiciera. A continuacion un ejemplo: aggregate(. ~ Species, data = iris, function(x) c(M = mean(x), Var var(x))) Por cierto, podrias reducir divisasBE$USD <-as.numeric(as.character(divisasBE$USD)) divisasBE$JPY <-as.numeric(as.character(divisasBE$JPY)) divisasBE$CHF <-as.numeric(as.character(divisasBE$CHF)) ... divisasBE$BRR <-as.numeric(as.character(divisasBE$BRR)) utilizando algo como divisisasBE[] <- apply(divisasBE, 2, function(x) as.numeric(as.character(x))) antes de crear divisasBE$date o inclusive agregando na.strings = "" cuando lees la base de datos via read.delim(). Dale una mirada a ?read.delim para mas opciones. Un saludo, Jorge.- 2012/1/21 Otto F. Wagner <>> Hola! muchas gracias a Carlos, Jorge y Oscar. Al final tardé más de la > cuenta porque mis datos tenían valores NA. Tuve que usar la opción de > aggregate "na.rm=TRUE" para que al calcular la media saltara esos valores y > los valores agregados no fueran NA. > > Quiero compartir el código por si algún novato como yo se encuentra en > situación similar. Una pregunta: hay alguna forma en aggregate para que te > calcule dos funciones a la vez? por ejemplo Var y Mean. > > Gracias y saludos! > > El código: > > divisasBE <- read.delim("~/investigacion/Divisas/divisasBE.txt", dec=".") > > # como hay datos nulos R los pasa a factor, luego debemos convertirlos a > numéricos > divisasBE$date<-as.Date(divisasBE$date) > #class(divisasBE$CHF) > divisasBE$USD <-as.numeric(as.character(divisasBE$USD)) > divisasBE$JPY <-as.numeric(as.character(divisasBE$JPY)) > divisasBE$CHF <-as.numeric(as.character(divisasBE$CHF)) > divisasBE$GBP <-as.numeric(as.character(divisasBE$GBP)) > divisasBE$SUK <-as.numeric(as.character(divisasBE$SUK)) > divisasBE$DEK <-as.numeric(as.character(divisasBE$DEK)) > divisasBE$NOK <-as.numeric(as.character(divisasBE$NOK)) > divisasBE$AUD <-as.numeric(as.character(divisasBE$AUD)) > divisasBE$CAD <-as.numeric(as.character(divisasBE$CAD)) > divisasBE$NED <-as.numeric(as.character(divisasBE$NED)) > divisasBE$SDR <-as.numeric(as.character(divisasBE$SDR)) > divisasBE$CHP <-as.numeric(as.character(divisasBE$CHP)) > divisasBE$CGK <-as.numeric(as.character(divisasBE$CGK)) > divisasBE$HUF <-as.numeric(as.character(divisasBE$HUF)) > divisasBE$POZ <-as.numeric(as.character(divisasBE$POZ)) > divisasBE$ESK <-as.numeric(as.character(divisasBE$ESK)) > divisasBE$ESC <-as.numeric(as.character(divisasBE$ESC)) > divisasBE$ISK <-as.numeric(as.character(divisasBE$ISK)) > divisasBE$LEL <-as.numeric(as.character(divisasBE$LEL)) > divisasBE$RUL <-as.numeric(as.character(divisasBE$RUL)) > divisasBE$BUL <-as.numeric(as.character(divisasBE$BUL)) > divisasBE$INR <-as.numeric(as.character(divisasBE$INR)) > divisasBE$TUL <-as.numeric(as.character(divisasBE$TUL)) > divisasBE$LIL <-as.numeric(as.character(divisasBE$LIL)) > divisasBE$HKD <-as.numeric(as.character(divisasBE$HKD)) > divisasBE$SID <-as.numeric(as.character(divisasBE$SID)) > divisasBE$SUR <-as.numeric(as.character(divisasBE$SUR)) > divisasBE$SUW <-as.numeric(as.character(divisasBE$SUW)) > divisasBE$CHY <-as.numeric(as.character(divisasBE$CHY)) > divisasBE$CRK <-as.numeric(as.character(divisasBE$CRK)) > divisasBE$INDR<-as.numeric(as.character(divisasBE$IND)) > divisasBE$MAR <-as.numeric(as.character(divisasBE$MAR)) > divisasBE$FIP <-as.numeric(as.character(divisasBE$FIP)) > divisasBE$RUR <-as.numeric(as.character(divisasBE$RUR)) > divisasBE$TEB <-as.numeric(as.character(divisasBE$TEB)) > divisasBE$MEP <-as.numeric(as.character(divisasBE$MEP)) > divisasBE$BRR <-as.numeric(as.character(divisasBE$BRR)) > divisasBE$mo <- substr(divisasBE$date,6,7) > divisasBE$yr <- substr(divisasBE$date, 1,4) > divisasBE$month<-paste(''01-'',divisasBE$mo,''-'',divisasBE$yr,sep='''') > divisasBE$month<-as.Date(divisasBE$month, "%d-%m-%Y" ) > > > > > #agregamos, para poder "vencer" los NA usamos na.rm=TRUE > > eur.agg<-aggregate(divisasBE, by=list(divisasBE$month),FUN=mean,na.rm=TRUE) > eur.agg$date<-eur.agg$Group.1 > eur.agg$Group.1<-NULL > eur.agg$mo<-NULL > eur.agg$yr<-NULL > eur.agg$month<-NULL > > * > * > > > > El 19 de enero de 2012 23:28, Otto F. Wagner <> escribió: > > > Gracias a ambos!! > > > > El problema fue que aggregate no clasifica por variables tipo date, pero > > se convierte a string y va bien. > > > > > > Intenté el sqldf pero creo que me daba error por nombrar las tablas de la > > forma algo.algo. > > > > Un saludo > > > > > > El 19 de enero de 2012 23:00, Carlos Ortega <>escribió: > > > > Hola, > >> > >> Con la librería sqldf es bastante inmediato: > >> > >> > >> Lines <- "DeployID Date.Time LocationQuality Latitude Longitude > >> STM05-1 2005/02/28 17:35 Good -35.562 177.158 > >> STM05-1 2005/02/28 19:44 Good -35.487 177.129 > >> STM05-1 2005/02/28 23:01 Unknown -35.399 177.064 > >> STM05-1 2005/03/01 07:28 Unknown -34.978 177.268 > >> STM05-1 2005/03/01 18:06 Poor -34.799 177.027 > >> STM05-1 2005/03/01 18:47 Poor -34.85 177.059 > >> STM05-2 2005/02/28 12:49 Good -35.928 177.328 > >> STM05-2 2005/02/28 21:23 Poor -35.926 177.314 > >> " > >> > >> DF <- read.table(textConnection(Lines), skip = 1, as.is = TRUE, > >> col.names = c("Id", "Date", "Time", "Quality", "Lat", "Long")) > >> > >> > sqldf("select Date, avg(Lat), avg(Long) from DF group by Date") > Date avg(Lat) avg(Long) > >> 1 2005/02/28 -35.66040 177.1986 > >> 2 2005/03/01 -34.87567 177.1180 > >> > >> > > >> Al margen queda el sinsentido de la media de una Longitud o Latitud... > >> :-). > >> > >> Saludos, > >> Carlos Ortega > >> www.qualityexcellence.es > >> > >> > >> Saludos, > >> Carlos Ortega > >> www.qualityexcellence > >> > >> El 19 de enero de 2012 22:26, Otto F. Wagner <>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]] > >>> > >>> > >>> _______________________________________________ > >>> R-help-es mailing list > >>> R-help-es@r-project.org > >>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >>> > >>> > >> > > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Gracias!! investigando encontré el paquete doBy y con la función summary
muy parecida al proc summary de SAS
Os pongo la r-help:
Function to calculate groupwise summary statisticsDescription
Function to calculate groupwise summary statistics, much like the summary
procedure of SAS
Usage
summaryBy(formula, data = parent.frame(), id = NULL, FUN = mean,
keep.names=FALSE, p2d=FALSE, order=TRUE, full.dimension=FALSE, ...)
Argumentsformula
A formula object, see examples below
data
A data frame
id
A formula specifying variables which data are not grouped by but which
should appear in the output. See examples below.
FUN
A list of functions to be applied, see examples below.
keep.names
If TRUE and if there is only ONE function in FUN, then the variables in the
output will have the same name as the variables in the input, see
''examples''.
p2d
Should parentheses in output variable names be replaced by dots?
order
Should the resulting dataframe be ordered according to the variables on the
right hand side of the formula? (using orderBy <../../doBy/help/orderBy>
full.dimension
If TRUE then rows of summary statistics are repeated such that the result
will have the same number of rows as the input dataset.
...
Additional arguments to FUN. This could for example be NA actions.
*
*
Saludos!
El 21 de enero de 2012 19:48, Jorge I Velez
<jorgeivanvelez@gmail.com>escribió:
> Hola Otto,
>
> SI, si es posible: bastaria con crear una funcion que lo hiciera. A
> continuacion un ejemplo:
>
> aggregate(. ~ Species, data = iris, function(x) c(M = mean(x), Var >
var(x)))
>
> Por cierto, podrias reducir
>
> divisasBE$USD <-as.numeric(as.character(divisasBE$USD))
> divisasBE$JPY <-as.numeric(as.character(divisasBE$JPY))
> divisasBE$CHF <-as.numeric(as.character(divisasBE$CHF))
> ...
> divisasBE$BRR <-as.numeric(as.character(divisasBE$BRR))
>
> utilizando algo como
>
> divisisasBE[] <- apply(divisasBE, 2, function(x)
> as.numeric(as.character(x)))
>
> antes de crear divisasBE$date o inclusive agregando na.strings =
"" cuando
> lees la base de datos via read.delim(). Dale una mirada a ?read.delim para
> mas opciones.
>
> Un saludo,
> Jorge.-
>
>
> 2012/1/21 Otto F. Wagner <>
>
>> Hola! muchas gracias a Carlos, Jorge y Oscar. Al final tardé más de
la
>> cuenta porque mis datos tenían valores NA. Tuve que usar la opción de
>> aggregate "na.rm=TRUE" para que al calcular la media saltara
esos valores
>> y
>> los valores agregados no fueran NA.
>>
>> Quiero compartir el código por si algún novato como yo se encuentra en
>> situación similar. Una pregunta: hay alguna forma en aggregate para que
te
>> calcule dos funciones a la vez? por ejemplo Var y Mean.
>>
>> Gracias y saludos!
>>
>> El código:
>>
>> divisasBE <-
read.delim("~/investigacion/Divisas/divisasBE.txt", dec=".")
>>
>> # como hay datos nulos R los pasa a factor, luego debemos convertirlos
a
>> numéricos
>> divisasBE$date<-as.Date(divisasBE$date)
>> #class(divisasBE$CHF)
>> divisasBE$USD <-as.numeric(as.character(divisasBE$USD))
>> divisasBE$JPY <-as.numeric(as.character(divisasBE$JPY))
>> divisasBE$CHF <-as.numeric(as.character(divisasBE$CHF))
>> divisasBE$GBP <-as.numeric(as.character(divisasBE$GBP))
>> divisasBE$SUK <-as.numeric(as.character(divisasBE$SUK))
>> divisasBE$DEK <-as.numeric(as.character(divisasBE$DEK))
>> divisasBE$NOK <-as.numeric(as.character(divisasBE$NOK))
>> divisasBE$AUD <-as.numeric(as.character(divisasBE$AUD))
>> divisasBE$CAD <-as.numeric(as.character(divisasBE$CAD))
>> divisasBE$NED <-as.numeric(as.character(divisasBE$NED))
>> divisasBE$SDR <-as.numeric(as.character(divisasBE$SDR))
>> divisasBE$CHP <-as.numeric(as.character(divisasBE$CHP))
>> divisasBE$CGK <-as.numeric(as.character(divisasBE$CGK))
>> divisasBE$HUF <-as.numeric(as.character(divisasBE$HUF))
>> divisasBE$POZ <-as.numeric(as.character(divisasBE$POZ))
>> divisasBE$ESK <-as.numeric(as.character(divisasBE$ESK))
>> divisasBE$ESC <-as.numeric(as.character(divisasBE$ESC))
>> divisasBE$ISK <-as.numeric(as.character(divisasBE$ISK))
>> divisasBE$LEL <-as.numeric(as.character(divisasBE$LEL))
>> divisasBE$RUL <-as.numeric(as.character(divisasBE$RUL))
>> divisasBE$BUL <-as.numeric(as.character(divisasBE$BUL))
>> divisasBE$INR <-as.numeric(as.character(divisasBE$INR))
>> divisasBE$TUL <-as.numeric(as.character(divisasBE$TUL))
>> divisasBE$LIL <-as.numeric(as.character(divisasBE$LIL))
>> divisasBE$HKD <-as.numeric(as.character(divisasBE$HKD))
>> divisasBE$SID <-as.numeric(as.character(divisasBE$SID))
>> divisasBE$SUR <-as.numeric(as.character(divisasBE$SUR))
>> divisasBE$SUW <-as.numeric(as.character(divisasBE$SUW))
>> divisasBE$CHY <-as.numeric(as.character(divisasBE$CHY))
>> divisasBE$CRK <-as.numeric(as.character(divisasBE$CRK))
>> divisasBE$INDR<-as.numeric(as.character(divisasBE$IND))
>> divisasBE$MAR <-as.numeric(as.character(divisasBE$MAR))
>> divisasBE$FIP <-as.numeric(as.character(divisasBE$FIP))
>> divisasBE$RUR <-as.numeric(as.character(divisasBE$RUR))
>> divisasBE$TEB <-as.numeric(as.character(divisasBE$TEB))
>> divisasBE$MEP <-as.numeric(as.character(divisasBE$MEP))
>> divisasBE$BRR <-as.numeric(as.character(divisasBE$BRR))
>> divisasBE$mo <- substr(divisasBE$date,6,7)
>> divisasBE$yr <- substr(divisasBE$date, 1,4)
>>
divisasBE$month<-paste(''01-'',divisasBE$mo,''-'',divisasBE$yr,sep='''')
>> divisasBE$month<-as.Date(divisasBE$month, "%d-%m-%Y" )
>>
>>
>>
>>
>> #agregamos, para poder "vencer" los NA usamos na.rm=TRUE
>>
>> eur.agg<-aggregate(divisasBE,
>> by=list(divisasBE$month),FUN=mean,na.rm=TRUE)
>> eur.agg$date<-eur.agg$Group.1
>> eur.agg$Group.1<-NULL
>> eur.agg$mo<-NULL
>> eur.agg$yr<-NULL
>> eur.agg$month<-NULL
>>
>> *
>> *
>>
>>
>>
>> El 19 de enero de 2012 23:28, Otto F. Wagner <> escribió:
>>
>> > Gracias a ambos!!
>> >
>> > El problema fue que aggregate no clasifica por variables tipo
date, pero
>> > se convierte a string y va bien.
>> >
>> >
>> > Intenté el sqldf pero creo que me daba error por nombrar las
tablas de
>> la
>> > forma algo.algo.
>> >
>> > Un saludo
>> >
>> >
>> > El 19 de enero de 2012 23:00, Carlos Ortega <>escribió:
>>
>> >
>> > Hola,
>> >>
>> >> Con la librería sqldf es bastante inmediato:
>> >>
>> >>
>> >> Lines <- "DeployID Date.Time LocationQuality Latitude
Longitude
>> >> STM05-1 2005/02/28 17:35 Good -35.562 177.158
>> >> STM05-1 2005/02/28 19:44 Good -35.487 177.129
>> >> STM05-1 2005/02/28 23:01 Unknown -35.399 177.064
>> >> STM05-1 2005/03/01 07:28 Unknown -34.978 177.268
>> >> STM05-1 2005/03/01 18:06 Poor -34.799 177.027
>> >> STM05-1 2005/03/01 18:47 Poor -34.85 177.059
>> >> STM05-2 2005/02/28 12:49 Good -35.928 177.328
>> >> STM05-2 2005/02/28 21:23 Poor -35.926 177.314
>> >> "
>> >>
>> >> DF <- read.table(textConnection(Lines), skip = 1, as.is =
TRUE,
>> >> col.names = c("Id", "Date",
"Time", "Quality", "Lat", "Long"))
>> >>
>> >> > sqldf("select Date, avg(Lat), avg(Long) from DF
group by Date")
>> Date avg(Lat) avg(Long)
>> >> 1 2005/02/28 -35.66040 177.1986
>> >> 2 2005/03/01 -34.87567 177.1180
>> >>
>> >> >
>> >> Al margen queda el sinsentido de la media de una Longitud o
Latitud...
>> >> :-).
>> >>
>> >> Saludos,
>> >> Carlos Ortega
>> >> www.qualityexcellence.es
>> >>
>> >>
>> >> Saludos,
>> >> Carlos Ortega
>> >> www.qualityexcellence
>> >>
>> >> El 19 de enero de 2012 22:26, Otto F. Wagner <>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]]
>> >>>
>> >>>
>> >>> _______________________________________________
>> >>> R-help-es mailing list
>> >>> R-help-es@r-project.org
>> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>> >>>
>> >>>
>> >>
>> >
>>
>> [[alternative HTML version deleted]]
>>
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
[[alternative HTML version deleted]]
Hola Otto, Esa es una de las tantas opciones que hay en R. Por ejemplo, en base, tapply(), aggregate(), ave() y combinaciones de split() y s/lapply() hacen un trabajo similar. Ahora, si estas trabajando con data.frames() y quieres como resultado otro data.frame(), entonces la libreria plyr, es una muy buena alternativa. En http://plyr.had.co.nz/ puedes encontrar mas informacion. Te recomiendo revisar el articulo publicado en JSS: http://www.jstatsoft.org/v40/i01 Feliz fin de semana, Jorge.- 2012/1/21 Otto F. Wagner <>> Gracias!! investigando encontré el paquete doBy y con la función summary > muy parecida al proc summary de SAS > > Os pongo la r-help: > Function to calculate groupwise summary statisticsDescription > > Function to calculate groupwise summary statistics, much like the summary > procedure of SAS > Usage > > summaryBy(formula, data = parent.frame(), id = NULL, FUN = mean, > keep.names=FALSE, p2d=FALSE, order=TRUE, full.dimension=FALSE, ...) > > Argumentsformula > > A formula object, see examples below > data > > A data frame > id > > A formula specifying variables which data are not grouped by but which > should appear in the output. See examples below. > FUN > > A list of functions to be applied, see examples below. > keep.names > > If TRUE and if there is only ONE function in FUN, then the variables in > the output will have the same name as the variables in the input, see > ''examples''. > p2d > > Should parentheses in output variable names be replaced by dots? > order > > Should the resulting dataframe be ordered according to the variables on > the right hand side of the formula? (using orderBy<http://../../doBy/help/orderBy> > full.dimension > > If TRUE then rows of summary statistics are repeated such that the result > will have the same number of rows as the input dataset. > ... > > Additional arguments to FUN. This could for example be NA actions. > * > * > > Saludos! > > El 21 de enero de 2012 19:48, Jorge I Velez <> escribió: > > Hola Otto, >> >> SI, si es posible: bastaria con crear una funcion que lo hiciera. A >> continuacion un ejemplo: >> >> aggregate(. ~ Species, data = iris, function(x) c(M = mean(x), Var >> var(x))) >> >> Por cierto, podrias reducir >> >> divisasBE$USD <-as.numeric(as.character(divisasBE$USD)) >> divisasBE$JPY <-as.numeric(as.character(divisasBE$JPY)) >> divisasBE$CHF <-as.numeric(as.character(divisasBE$CHF)) >> ... >> divisasBE$BRR <-as.numeric(as.character(divisasBE$BRR)) >> >> utilizando algo como >> >> divisisasBE[] <- apply(divisasBE, 2, function(x) >> as.numeric(as.character(x))) >> >> antes de crear divisasBE$date o inclusive agregando na.strings = "" >> cuando lees la base de datos via read.delim(). Dale una mirada a >> ?read.delim para mas opciones. >> >> Un saludo, >> Jorge.- >> >> >> 2012/1/21 Otto F. Wagner <> >> >>> Hola! muchas gracias a Carlos, Jorge y Oscar. Al final tardé más de la >>> cuenta porque mis datos tenían valores NA. Tuve que usar la opción de >>> aggregate "na.rm=TRUE" para que al calcular la media saltara esos >>> valores y >>> los valores agregados no fueran NA. >>> >>> Quiero compartir el código por si algún novato como yo se encuentra en >>> situación similar. Una pregunta: hay alguna forma en aggregate para que >>> te >>> calcule dos funciones a la vez? por ejemplo Var y Mean. >>> >>> Gracias y saludos! >>> >>> El código: >>> >>> divisasBE <- read.delim("~/investigacion/Divisas/divisasBE.txt", dec=".") >>> >>> # como hay datos nulos R los pasa a factor, luego debemos convertirlos a >>> numéricos >>> divisasBE$date<-as.Date(divisasBE$date) >>> #class(divisasBE$CHF) >>> divisasBE$USD <-as.numeric(as.character(divisasBE$USD)) >>> divisasBE$JPY <-as.numeric(as.character(divisasBE$JPY)) >>> divisasBE$CHF <-as.numeric(as.character(divisasBE$CHF)) >>> divisasBE$GBP <-as.numeric(as.character(divisasBE$GBP)) >>> divisasBE$SUK <-as.numeric(as.character(divisasBE$SUK)) >>> divisasBE$DEK <-as.numeric(as.character(divisasBE$DEK)) >>> divisasBE$NOK <-as.numeric(as.character(divisasBE$NOK)) >>> divisasBE$AUD <-as.numeric(as.character(divisasBE$AUD)) >>> divisasBE$CAD <-as.numeric(as.character(divisasBE$CAD)) >>> divisasBE$NED <-as.numeric(as.character(divisasBE$NED)) >>> divisasBE$SDR <-as.numeric(as.character(divisasBE$SDR)) >>> divisasBE$CHP <-as.numeric(as.character(divisasBE$CHP)) >>> divisasBE$CGK <-as.numeric(as.character(divisasBE$CGK)) >>> divisasBE$HUF <-as.numeric(as.character(divisasBE$HUF)) >>> divisasBE$POZ <-as.numeric(as.character(divisasBE$POZ)) >>> divisasBE$ESK <-as.numeric(as.character(divisasBE$ESK)) >>> divisasBE$ESC <-as.numeric(as.character(divisasBE$ESC)) >>> divisasBE$ISK <-as.numeric(as.character(divisasBE$ISK)) >>> divisasBE$LEL <-as.numeric(as.character(divisasBE$LEL)) >>> divisasBE$RUL <-as.numeric(as.character(divisasBE$RUL)) >>> divisasBE$BUL <-as.numeric(as.character(divisasBE$BUL)) >>> divisasBE$INR <-as.numeric(as.character(divisasBE$INR)) >>> divisasBE$TUL <-as.numeric(as.character(divisasBE$TUL)) >>> divisasBE$LIL <-as.numeric(as.character(divisasBE$LIL)) >>> divisasBE$HKD <-as.numeric(as.character(divisasBE$HKD)) >>> divisasBE$SID <-as.numeric(as.character(divisasBE$SID)) >>> divisasBE$SUR <-as.numeric(as.character(divisasBE$SUR)) >>> divisasBE$SUW <-as.numeric(as.character(divisasBE$SUW)) >>> divisasBE$CHY <-as.numeric(as.character(divisasBE$CHY)) >>> divisasBE$CRK <-as.numeric(as.character(divisasBE$CRK)) >>> divisasBE$INDR<-as.numeric(as.character(divisasBE$IND)) >>> divisasBE$MAR <-as.numeric(as.character(divisasBE$MAR)) >>> divisasBE$FIP <-as.numeric(as.character(divisasBE$FIP)) >>> divisasBE$RUR <-as.numeric(as.character(divisasBE$RUR)) >>> divisasBE$TEB <-as.numeric(as.character(divisasBE$TEB)) >>> divisasBE$MEP <-as.numeric(as.character(divisasBE$MEP)) >>> divisasBE$BRR <-as.numeric(as.character(divisasBE$BRR)) >>> divisasBE$mo <- substr(divisasBE$date,6,7) >>> divisasBE$yr <- substr(divisasBE$date, 1,4) >>> divisasBE$month<-paste(''01-'',divisasBE$mo,''-'',divisasBE$yr,sep='''') >>> divisasBE$month<-as.Date(divisasBE$month, "%d-%m-%Y" ) >>> >>> >>> >>> >>> #agregamos, para poder "vencer" los NA usamos na.rm=TRUE >>> >>> eur.agg<-aggregate(divisasBE, >>> by=list(divisasBE$month),FUN=mean,na.rm=TRUE) >>> eur.agg$date<-eur.agg$Group.1 >>> eur.agg$Group.1<-NULL >>> eur.agg$mo<-NULL >>> eur.agg$yr<-NULL >>> eur.agg$month<-NULL >>> >>> * >>> * >>> >>> >>> >>> El 19 de enero de 2012 23:28, Otto F. Wagner <> escribió: >>> >>> > Gracias a ambos!! >>> > >>> > El problema fue que aggregate no clasifica por variables tipo date, >>> pero >>> > se convierte a string y va bien. >>> > >>> > >>> > Intenté el sqldf pero creo que me daba error por nombrar las tablas de >>> la >>> > forma algo.algo. >>> > >>> > Un saludo >>> > >>> > >>> > El 19 de enero de 2012 23:00, Carlos Ortega <>escribió: >>> >>> > >>> > Hola, >>> >> >>> >> Con la librería sqldf es bastante inmediato: >>> >> >>> >> >>> >> Lines <- "DeployID Date.Time LocationQuality Latitude Longitude >>> >> STM05-1 2005/02/28 17:35 Good -35.562 177.158 >>> >> STM05-1 2005/02/28 19:44 Good -35.487 177.129 >>> >> STM05-1 2005/02/28 23:01 Unknown -35.399 177.064 >>> >> STM05-1 2005/03/01 07:28 Unknown -34.978 177.268 >>> >> STM05-1 2005/03/01 18:06 Poor -34.799 177.027 >>> >> STM05-1 2005/03/01 18:47 Poor -34.85 177.059 >>> >> STM05-2 2005/02/28 12:49 Good -35.928 177.328 >>> >> STM05-2 2005/02/28 21:23 Poor -35.926 177.314 >>> >> " >>> >> >>> >> DF <- read.table(textConnection(Lines), skip = 1, as.is = TRUE, >>> >> col.names = c("Id", "Date", "Time", "Quality", "Lat", "Long")) >>> >> >>> >> > sqldf("select Date, avg(Lat), avg(Long) from DF group by Date") >>> Date avg(Lat) avg(Long) >>> >> 1 2005/02/28 -35.66040 177.1986 >>> >> 2 2005/03/01 -34.87567 177.1180 >>> >> >>> >> > >>> >> Al margen queda el sinsentido de la media de una Longitud o Latitud... >>> >> :-). >>> >> >>> >> Saludos, >>> >> Carlos Ortega >>> >> www.qualityexcellence.es >>> >> >>> >> >>> >> Saludos, >>> >> Carlos Ortega >>> >> www.qualityexcellence >>> >> >>> >> El 19 de enero de 2012 22:26, Otto F. Wagner <>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]] >>> >>> >>> >>> >>> >>> _______________________________________________ >>> >>> R-help-es mailing list >>> >>> R-help-es@r-project.org >>> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >>> >>> >>> >>> >> >>> > >>> >>> [[alternative HTML version deleted]] >>> >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >>> >> >[[alternative HTML version deleted]]