如何将带有时间的字符向量转换为 Time class 并在 r 中求和后获得总时间

How can I convert character vector with time into Time class and get a total amount of time after summing in r

我有一个矢量,它 class 是字符。首先,我想将它转换成时间 class,然后我想根据时间量将它分成两个向量(我想要一个超过四小时的子集和一个少于四小时的子集).然后我想获得子集中的总时间。我还在这个问题上附加了我的数据集的屏幕截图。

使用tidyverse个包,你可以使用:

library(dplyr)
library(lubridate)

df <- tibble(
    Time = paste(round(runif(18, 0, 10)),
                 sprintf("%02.0f", round(runif(18, 0, 59))),
                 sprintf("%02.0f", round(runif(18, 0, 59))),
                 sep = ":")    
)

df %>%
    mutate(
        timevar = hms(Time),
        fourhrs = timevar > hms("4:00:00")
        ) %>%
    group_by(fourhrs) %>%
    summarize(
        sum = seconds_to_period(sum(period_to_seconds(timevar)))
    )

# A tibble: 2 x 2
  fourhrs sum           
* <lgl>   <Period>      
1 FALSE   14H 11M 26S   
2 TRUE    3d 17H 40M 51S