Dear Deepayan,
Thanks for your kind response.
Regards
Ogbos

On Thu, Mar 28, 2024 at 3:40 AM Deepayan Sarkar <deepayan.sar...@gmail.com>
wrote:

> For more complicated examples, the (relatively new) array2DF()
> function is also useful:
>
> > with(data, tapply(count, Date, mean)) |> array2DF()
>         Var1    Value
> 1 2024-03-23 5.416667
> 2 2024-03-24 5.500000
> 3 2024-03-25 6.000000
> 4 2024-03-26 4.476190
> 5 2024-03-27 6.538462
> 6 2024-03-28 5.200000
>
> or
>
> > tapply(data, ~ Date, with, mean(count)) |> array2DF(responseName =
> "count")
>         Date    count
> 1 2024-03-23 5.416667
> 2 2024-03-24 5.500000
> 3 2024-03-25 6.000000
> 4 2024-03-26 4.476190
> 5 2024-03-27 6.538462
> 6 2024-03-28 5.200000
>
> Best,
> -Deepayan
>
> On Wed, 27 Mar 2024 at 13:15, Rui Barradas <ruipbarra...@sapo.pt> wrote:
> >
> > Às 04:30 de 27/03/2024, Ogbos Okike escreveu:
> > > Warm greetings to you all.
> > >
> > > Using the tapply function below:
> > > data<-read.table("FD1month",col.names = c("Dates","count"))
> > > x=data$count
> > >   f<-factor(data$Dates)
> > > AB<- tapply(x,f,mean)
> > >
> > >
> > > I made a simple calculation. The result, stored in AB, is of the form
> > > below. But an effort to write AB to a file as a data frame fails. When
> I
> > > use the write table, it only produces the count column and strip of the
> > > first column (date).
> > >
> > > 2005-11-01 2005-12-01 2006-01-01 2006-02-01 2006-03-01 2006-04-01
> > > 2006-05-01
> > >   -4.106887  -4.259154  -5.836090  -4.756757  -4.118011  -4.487942
> > >   -4.430705
> > > 2006-06-01 2006-07-01 2006-08-01 2006-09-01 2006-10-01 2006-11-01
> > > 2006-12-01
> > >   -3.856727  -6.067103  -6.418767  -4.383031  -3.985805  -4.768196
> > > -10.072579
> > > 2007-01-01 2007-02-01 2007-03-01 2007-04-01 2007-05-01 2007-06-01
> > > 2007-07-01
> > >   -5.342338  -4.653128  -4.325094  -4.525373  -4.574783  -3.915600
> > >   -4.127980
> > > 2007-08-01 2007-09-01 2007-10-01 2007-11-01 2007-12-01 2008-01-01
> > > 2008-02-01
> > >   -3.952150  -4.033518  -4.532878  -4.522941  -4.485693  -3.922155
> > >   -4.183578
> > > 2008-03-01 2008-04-01 2008-05-01 2008-06-01 2008-07-01 2008-08-01
> > > 2008-09-01
> > >   -4.336969  -3.813306  -4.296579  -4.575095  -4.036036  -4.727994
> > >   -4.347428
> > > 2008-10-01 2008-11-01 2008-12-01
> > >   -4.029918  -4.260326  -4.454224
> > >
> > > But the normal format I wish to display only appears on the terminal,
> > > leading me to copy it and paste into a text file. That is, when I
> enter AB
> > > on the terminal, it returns a format in the form:
> > >
> > > 008-02-01  -4.183578
> > > 2008-03-01  -4.336969
> > > 2008-04-01  -3.813306
> > > 2008-05-01  -4.296579
> > > 2008-06-01  -4.575095
> > > 2008-07-01  -4.036036
> > > 2008-08-01  -4.727994
> > > 2008-09-01  -4.347428
> > > 2008-10-01  -4.029918
> > > 2008-11-01  -4.260326
> > > 2008-12-01  -4.454224
> > >
> > > Now, my question: How do I write out two columns displayed by AB on the
> > > terminal to a file?
> > >
> > > I have tried using AB<-data.frame(AB) but it doesn't work either.
> > >
> > > Many thanks for your time.
> > > Ogbos
> > >
> > >       [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > > and provide commented, minimal, self-contained, reproducible code.
> > Hello,
> >
> > The main trick is to pipe to as.data.frame. But the result will have one
> > column only, you must assign the dates from the df's row names.
> > I also include an aggregate solution.
> >
> >
> >
> > # create a test data set
> > set.seed(2024)
> > data <- data.frame(
> >    Date = sample(seq(Sys.Date() - 5, Sys.Date(), by = "1 days"), 100L,
> > TRUE),
> >    count = sample(10L, 100L, TRUE)
> > )
> >
> > # coerce tapply's result to class "data.frame"
> > res <- with(data, tapply(count, Date, mean)) |> as.data.frame()
> > # assign a dates column from the row names
> > res$Date <- row.names(res)
> > # cosmetics
> > names(res)[2:1] <- names(data)
> > # note that the row names are still tapply's names vector
> > # and that the columns order is not Date/count. Both are fixed
> > # after the calculations.
> > res
> > #>               count       Date
> > #> 2024-03-22 5.416667 2024-03-22
> > #> 2024-03-23 5.500000 2024-03-23
> > #> 2024-03-24 6.000000 2024-03-24
> > #> 2024-03-25 4.476190 2024-03-25
> > #> 2024-03-26 6.538462 2024-03-26
> > #> 2024-03-27 5.200000 2024-03-27
> >
> > # fix the columns' order
> > res <- res[2:1]
> >
> >
> >
> > # better all in one instruction
> > aggregate(count ~ Date, data, mean)
> > #>         Date    count
> > #> 1 2024-03-22 5.416667
> > #> 2 2024-03-23 5.500000
> > #> 3 2024-03-24 6.000000
> > #> 4 2024-03-25 4.476190
> > #> 5 2024-03-26 6.538462
> > #> 6 2024-03-27 5.200000
> >
> >
> >
> > Also,
> > I'm glad to help as always but Ogbos, you have been an R-Help
> > contributor for quite a while, please post data in dput format. Given
> > the problem the output of the following is more than enough.
> >
> >
> > dput(head(data, 20L))
> >
> >
> > Hope this helps,
> >
> > Rui Barradas
> >
> >
> > --
> > Este e-mail foi analisado pelo software antivírus AVG para verificar a
> presença de vírus.
> > www.avg.com
> >
> > ______________________________________________
> > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>

        [[alternative HTML version deleted]]

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

Reply via email to