Hello,

I forgot to add that I don't find your


unlist(agg[2], use.names = FALSE)


the best way, `[` extracts a sub-data.frame, use `[[` instead.


unlist(agg[[2]], use.names = FALSE)


It may not make a difference, followed by unlist the results might be
the same but it is conceptually better to extract the column, to use
`[[`. See the difference between the two:


str(agg[2])
str(agg[[2]])


Hope this helps,
Rui Barradas

Rui Barradas <[email protected]> escreveu (segunda, 10/08/2026
à(s) 11:51):
>
> Hello,
>
> The problem is that the first aggregate's second column is a list and
> the second aggregate's second column is a matrix.
> In the code below I have complicated it a bit so that the intermediate
> results are created and examined.
>
> mydf <- data.frame(
>   Data=seq(as.POSIXct("2003-01-01", format = "%Y-%m-%d",
> tz="Etc/GMT-1"), as.POSIXct("2023-12-31", format = "%Y-%m-%d",
> tz="Etc/GMT-1"), by="1 day"),
>   daily_mean = round(runif(7670, 0, 2), digits=2))
>
> agg <- aggregate(daily_mean ~ as.integer(format(mydf$Data, "%Y")),
>                  data=mydf, cumsum)
>
> mydf$yearly_sum <- unlist(agg[2], use.names = FALSE)
>
>
> mydf1 <- data.frame(
>   Data=seq(as.POSIXct("2003-01-01", format = "%Y-%m-%d",
> tz="Etc/GMT-1"), as.POSIXct("2023-12-31", format = "%Y-%m-%d",
> tz="Etc/GMT-1"), by="1 day"),
>   daily_mean = round(runif(7670, 0, 2), digits=2))
> dim(mydf1)
> #> [1] 7670    2
>
> # this removes 5 rows from mydf1
> i <- format(mydf1$Data, "%m-%d") != "02-29"
> mydf1 <- mydf1[i, ]
> dim(mydf1)
> #> [1] 7665    2
>
> agg2 <- aggregate(daily_mean ~ as.integer(format(mydf1$Data, "%Y")),
>                   data=mydf1, cumsum)
> mydf1$yearly_sum <- unlist(agg2[2], use.names = FALSE)
>
>
>
> Now see what is in agg and in agg2.
>
>
> class(agg$daily_mean)
> #> [1] "list"
> # returns FALSE, 5 list members have length 366
> all(lengths(agg$daily_mean) == 365)
> #> [1] FALSE
> lengths(agg$daily_mean)
> #>  [1] 365 366 365 365 365 366 365 365 365 366 365 365 365 366 365
> 365 365 366 365
> #> [20] 365 365
>
> class(agg2$daily_mean)
> #> [1] "matrix" "array"
> ncol(agg2$daily_mean) == 365
> #> [1] TRUE
>
>
> agg2's second column is a matrix where each row represents the year's
> cumulative sums. R stores matrices in column-first order so you have
> to transpose the matrix and then remove the dim attribute (for
> instance, with `c`), not `unlist` it.
>
>
> # after running the agg2 <- aggregate(...) above, run
> mydf1$yearly_sum <- c(t(agg2$daily_mean))
>
>
> Hope this helps,
>
> Rui Barradas
>
>
> Stefano Sofia via R-help <[email protected]> escreveu (segunda,
> 10/08/2026 à(s) 11:07):
> >
> > Dear R-list users,
> >
> > I've got problems to use the function aggregate.
> >
> >
> > Here there is an example:
> >
> >
> > mydf <- data.frame(Data=seq(as.POSIXct("2003-01-01", format = "%Y-%m-%d", 
> > tz="Etc/GMT-1"), as.POSIXct("2023-12-31", format = "%Y-%m-%d", 
> > tz="Etc/GMT-1"), by="1 day"), daily_mean = round(runif(7670, 0, 2), 
> > digits=2))
> >
> > mydf$yearly_sum <- unlist(aggregate(daily_mean~as.integer(format(mydf$Data, 
> > "%Y")), data=mydf, cumsum)[2], use.names = FALSE)
> >
> >
> > The column "yearly_sum" is the sum of the column "daily_mean" with a reset 
> > at the beginning of each year.
> >
> > If for my analysis I want to remove the 29th of February, "yearly_sum" does 
> > not work anymore:
> >
> >
> > mydf1 <- data.frame(Data=seq(as.POSIXct("2003-01-01", format = "%Y-%m-%d", 
> > tz="Etc/GMT-1"), as.POSIXct("2023-12-31", format = "%Y-%m-%d", 
> > tz="Etc/GMT-1"), by="1 day"), daily_mean = round(runif(7670, 0, 2), 
> > digits=2))
> >
> > mydf1 <- mydf1[format(mydf1$Data, "%m-%d") != "02-29", ]
> >
> > mydf1$yearly_sum <- 
> > unlist(aggregate(daily_mean~as.integer(format(mydf1$Data, "%Y")), 
> > data=mydf1, cumsum)[2], use.names = FALSE)
> >
> >
> > In this case the column "yearly_sum" does not sum the values, and honestly 
> > I do not understand what is happening. Why?
> >
> > Could somebody help me? I already spent a big amount of hours with no 
> > success.
> >
> >
> > Thank you for your attention and you help
> >
> > Stefano
> >
> >
> >
> >
> >          (oo)
> > --oOO--( )--OOo--------------------------------------
> > Stefano Sofia MSc, PhD
> > Civil Protection Department - Marche Region - Italy
> > Meteo Section
> > Snow Section
> > Via Colle Ameno 5
> > 60126 Torrette di Ancona, Ancona (AN)
> > Uff: +39 071 806 7743
> > E-mail: [email protected]
> > ---Oo---------oO----------------------------------------
> >
> > ________________________________
> >
> > AVVISO IMPORTANTE: Questo messaggio di posta elettronica può contenere 
> > informazioni confidenziali, pertanto è destinato solo a persone autorizzate 
> > alla ricezione. I messaggi di posta elettronica per i client di Regione 
> > Marche possono contenere informazioni confidenziali e con privilegi legali. 
> > Se non si è il destinatario specificato, non leggere, copiare, inoltrare o 
> > archiviare questo messaggio. Se si è ricevuto questo messaggio per errore, 
> > inoltrarlo al mittente ed eliminarlo completamente dal sistema del proprio 
> > computer. Ai sensi dell'art. Ai sensi dell'art. 2.4 dell'allegato 1 alla 
> > DGR n. 74/2021, si segnala che, in caso di necessità ed urgenza, la 
> > risposta al presente messaggio di posta elettronica può essere visionata da 
> > persone estranee al destinatario.
> > IMPORTANT NOTICE: This e-mail message is intended to be received only by 
> > persons entitled to receive the confidential information it may contain. 
> > E-mail messages to clients of Regione Marche may contain information that 
> > is confidential and legally privileged. Please do not read, copy, forward, 
> > or store this message unless you are an intended recipient of it. If you 
> > have received this message in error, please forward it to the sender and 
> > delete it completely from your computer system.
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [email protected] mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide 
> > https://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.

______________________________________________
[email protected] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to