如何计算R中给定时间点的持续时间
我试图找到一个包或R代码,可以帮助计算多个主题的不同时间点的持续时间 这就是数据的样子如何计算R中给定时间点的持续时间,r,package,wrangle,R,Package,Wrangle,我试图找到一个包或R代码,可以帮助计算多个主题的不同时间点的持续时间 这就是数据的样子 ------------------------------------ SubjectID | Task |Duration ------------------------------------ A |Cleaning |0:10:01 A |Cleaning |2:33:54 A |Carpeting
------------------------------------
SubjectID | Task |Duration
------------------------------------
A |Cleaning |0:10:01
A |Cleaning |2:33:54
A |Carpeting |0:16:16
A |Carpeting |0:19:23
A |Painting |0:20:16
B |Cleaning |1:45:60
B |Carpeting |0:15:01
B |Painting |1:15:10
B |Painting |0:15:60
C |Carpeting |1:16:16
C |Cleaning |0:20:16
C |Painting |0:30:10
-------------------------------------
我想要这张桌子
-----------------------------------------------------------------------------------
SubjectID |Number |Number |Number |Total number |Duration |
|of Cleaning |of Carpeting |of Painting | of Tasks |in hours |
-----------------------------------------------------------------------------------
A | 2 | 2 | 1 | 5 | 3:33:11 |
B | 1 | 1 | 2 | 4 | 3:52:18 |
C | 1 | 1 | 1 | 3 | 2:10:07 |
-----------------------------------------------------------------------------------
你知道有什么方法可以帮助我得到表2吗
library(dplyr)
Data_pivot <- Data %>% group_by(SubjectID) %>% summarise(number = n()
,cleaning = sum(case_when(Task == 'Cleaning' ~ 1
,TRUE ~ 0))
,Carpeting = sum(case_when(Task == 'Carpeting' ~ 1
,TRUE ~ 0))
,Painting = sum(case_when(Task == 'Painting' ~ 1
,TRUE ~ 0))
,duration = sum(Duration))
好了:
library(dplyr)
Data_pivot <- Data %>% group_by(SubjectID) %>% summarise(number = n()
,cleaning = sum(case_when(Task == 'Cleaning' ~ 1
,TRUE ~ 0))
,Carpeting = sum(case_when(Task == 'Carpeting' ~ 1
,TRUE ~ 0))
,Painting = sum(case_when(Task == 'Painting' ~ 1
,TRUE ~ 0))
,duration = sum(Duration))
对于处理时间和日期,lubridate软件包非常受欢迎,并且与tidyverse的其他部分(如上面Gonzalo的dplyr)配合得很好。有许多函数可以将字符串转换为日期或时间,然后再转换为可以求和的持续时间和句点 下面是一个案例示例,使用hms、时段到秒以及as.duration
如果您需要以相同的HH:MM:SS格式格式化最终的总和,您可能需要执行一些额外的技巧,如此处所示:用于处理时间和日期,lubridate包非常流行,并且与tidyverse的其他部分(如上面Gonzalo的dplyr)配合使用效果很好。有许多函数可以将字符串转换为日期或时间,然后再转换为可以求和的持续时间和句点 下面是一个案例示例,使用hms、时段到秒以及as.duration 如果需要以相同的HH:MM:SS格式格式化最终总和,则可能需要执行一些额外的技巧,如下图所示:
> secs
[1] 601 9234 976
> durations
[1] "601s (~10.02 minutes)" "9234s (~2.56 hours)" "976s (~16.27 minutes)"