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

Dr Eberhard W Lisse no@p@m @end|ng |rom ||@@e@NA
Thu Mar 25 19:34:15 CET 2021


Thanks, that is helpful.

But, how do I group it to produce hours worked per week per month?

el


On 2021-03-25 19:03 , Greg Snow wrote:
> 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.
> 
> 
>



More information about the R-help mailing list