首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >总结期间

总结期间
EN

Stack Overflow用户
提问于 2019-03-20 17:48:52
回答 2查看 183关注 0票数 2

我的表中有一个lubridate period列,如下所示。

代码语言:javascript
复制
workerID   worked_hours
02         08H30M00S
02         08H00M00S    
03         08H00M00S
03         05H40M00S

我想要实现的是对workerID的工作小时数求和。我还希望它是HH:MM:SS格式,即使小时数超过24小时,我也不希望它有一天,而是使小时数累计超过24小时。我已经尝试过使用

代码语言:javascript
复制
df %>%
 group_by(workerID) %>% 
 summarise(sum(worked_hours))

但这会返回一个0

EN

回答 2

Stack Overflow用户

发布于 2019-03-20 18:41:22

您可以使用lubridate包,它使处理时间变得更容易。在您的示例中,我们需要首先转换为hms (小时、分钟、秒)类,按worker ID分组并获取sum。但是,为了将其转换为HH:MM:SS格式,我们需要转换为句号,即

代码语言:javascript
复制
library(tidyverse)
library(lubridate)

df %>% 
 mutate(new = as.duration(hms(worked_hours))) %>% 
 group_by(workerID) %>% 
 summarise(sum_times = sum(new)) %>% 
 mutate(sum_times = seconds_to_period(sum_times))

这给了我们

A tibble: 2 x 2 workerID sum_times 1 2 16H 30M 0S 2 3 13H 40M 0S

票数 1
EN

Stack Overflow用户

发布于 2019-03-20 18:12:47

还有一个基本的R解决方案。我添加了一个超过分钟和小时的行。

代码语言:javascript
复制
  workerID worked_hours
1        2    08H30M00S
2        2    08H00M00S
3        3    08H00M00S
4        3    05H40M00S
5        2    09H45M00S

我们可以在字符处拆分worked_hours,然后根据工人的ID聚合它。之后,我们需要从分钟中减去完整的小时数。最后,我们用:压缩时间。

代码语言:javascript
复制
p <- cbind(p[1], do.call(rbind, lapply(strsplit(p$worked_hours, "\\D"), as.numeric)))
p <- aggregate(. ~ workerID, p, sum)
p$`1` <- p$`1` + floor(p$`2` / 60)
p$`2` <- p$`2` %% 60
p[-1] <- lapply(p[-1], function(x) sprintf("%02d", x))  # to always have two digits
cbind(p[1], worked_hours=apply(p[-1], 1, function(x) paste(x, collapse=":")))
#   workerID worked_hours
# 1        2     26:15:00
# 2        3     13:40:00

Data

代码语言:javascript
复制
p <- structure(list(workerID = c("2", "2", "3", "3", "2"), worked_hours = c("08H30M00S", 
    "08H00M00S", "08H00M00S", "05H40M00S", "09H45M00S")), row.names = c(NA, 
    -5L), class = "data.frame")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55257828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档