r - 计算 R 中的平均时间

标签 r time hour minute

我的 Dataframe 名为 copy1:

    copy1
Source: local data frame [4 x 4]
Groups: GM [2]

      GM Avg.Start.Time Avg.Close.Time Avg.Last.Task.Duration
  (fctr)         (fctr)         (fctr)                  (int)
1   ED          13:15          16:16                    181
2   ED          16:12          17:44                     92
3   LD          15:32          17:27                    115
4   LD          14:38          17:11                    153

我想计算Avg.Close.Time Per GM

我试过:

copy1$Avg.Start.Time <-strptime(copy1$Avg.Start.Time, "%H:%M")
copy1%>%group_by(GM)%>%
        summarise(mean(copy1$Avg.Start.Time,na.rm=T))

但是得到这个:

Error: column 'Avg.Start.Time' has unsupported type : POSIXlt, POSIXt

我也尝试过使用 lubridate:

copy1$Avg.Start.Time <- hm(copy1$Avg.Start.Time)

mean(copy1$Avg.Start.Time,na.rm = T)

但得到“0”

关于如何计算每个 GMAvg.Start.Time 有什么想法吗?

最佳答案

您可以使用as.POSIXct 进行转换,其结果可用于mean:

result <- copy1%>%group_by(GM)%>%
  summarise(mean(as.POSIXct(Avg.Start.Time, format="%M:%S"),na.rm=T))

但是,这会将当前日期添加到时间中:

print(result)
## A tibble: 2 x 2
##      GM mean(as.POSIXct(copy1$Avg.Start.Time,...
##  <fctr>                                   <time>
##1     ED                      2016-08-24 00:14:54
##2     LD                      2016-08-24 00:15:05

正如 OP 所指出的,我们可以格式化结果以删除日期:

result <- copy1%>%group_by(GM)%>%
  summarise(Avg.Start.Time=format(mean(as.POSIXct(Avg.Start.Time, format="%M:%S"),na.rm=T), format="%M:%S"))
## A tibble: 2 x 2
##      GM Avg.Start.Time
##  <fctr>          <chr>
##1     ED          14:43
##2     LD          15:05

关于r - 计算 R 中的平均时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39123027/

相关文章:

swift - 检查日期何时过去 - Swift

php - SELECT QUERY 在一定时间内获得员工的帮助

mysql - 一个月中的小时数 - mysql 查询

r - 如何使用 DT 包中的 renderDataTable() 格式化数据表的列?

R:负载警告

java - 计算时间跨度的最佳方法是什么?

date - AIML 聊天机器人响应在不同时间有所不同?

r - 将数据框中的一组范围转换为单个元素频率的有效方法?

r - R中lm(y~.)中点的含义