[R] How to average minutes per hour per month in the form of '# hours #minutes'

Greg Snow 538280 @end|ng |rom gm@||@com
Thu Mar 25 18:03:30 CET 2021


Here is one approach:

tmp <- data.frame(min=seq(0,150, by=15))

tmp %>%
  mutate(hm=sprintf("%2d Hour%s %2d Minutes",
                    min %/% 60, ifelse((min %/% 60) == 1, " ", "s"),
                    min %% 60))

You could replace `sprintf` with `str_glue` (and update the syntax as
well) if you realy need tidyverse, but you would also loose some
formatting capability.

I don't know of tidyverse versions of `%/%` or `%%`.  If you need the
numeric values instead of a string then just remove the `sprintf` and
use mutate directly with `min %/% 60` and `min %% 60`.

This of course assumes all of your data is in minutes (by the time you
pipe to this code) and that all hours have 60 minutes (I don't know of
any leap hours.

On Sun, Mar 21, 2021 at 8:31 AM Dr Eberhard W Lisse <nospam using lisse.na> wrote:
>
> Hi,
>
> I have minutes worked by day (with some more information)
>
> which when using
>
>         library(tidyverse)
>         library(lubridate)
>
> run through
>
>         CONSMINUTES %>%
>                 select(datum, dauer) %>%
>                 arrange(desc(datum))
>
> look somewhat like
>
>         # A tibble: 142 x 2
>            datum      dauer
>            <date>     <int>
>          1 2021-03-18    30
>          2 2021-03-17    30
>          3 2021-03-16    30
>          4 2021-03-16    30
>          5 2021-03-16    30
>          6 2021-03-16    30
>          7 2021-03-11    30
>          8 2021-03-11    30
>          9 2021-03-11    30
>         10 2021-03-11    30
>         # … with 132 more rows
>
> I can extract minutes per hour
>
>         CONSMINUTES %>%
>         select(datum, dauer) %>%
>         group_by(week = format(datum, '%Y %V'))%>%
>         summarise_if(is.numeric, sum)
>
> and minutes per month
>
>         CONSMINUTES %>%
>         select(datum, dauer) %>%
>         group_by(month = format(datum, '%Y %m'))%>%
>         summarise_if(is.numeric, sum)
>
> I need to show the time worked per week per month in the format of
>
>         '# hours # minutes'
>
> and would like to also be able to show the average time per week per
> month.
>
> How can I do that (preferably with tidyverse :-)-O)?
>
> greetings, el
>
> ______________________________________________
> R-help using 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.



-- 
Gregory (Greg) L. Snow Ph.D.
538280 using gmail.com



More information about the R-help mailing list