如何计算R中数据帧的平均时间

如何计算R中数据帧的平均时间,r,R,对不起,我的英语不好,我是R编程新手。我有csv格式的数据 DATA1 DATA2 PAPERINO 05:29:29 PAPERINO 04:43:47 PAPERINO 04:43:47 PAPERINO 03:27:46 PIPPO000 00:27:07 PIPPO000 00:27:07 PIPPO000 00:27:07 PIPPO000 00:27:07 PIPPO000 00:26:04 PIPPO000 0

对不起,我的英语不好,我是R编程新手。我有csv格式的数据

DATA1       DATA2
PAPERINO    05:29:29
PAPERINO    04:43:47
PAPERINO    04:43:47
PAPERINO    03:27:46
PIPPO000    00:27:07
PIPPO000    00:27:07
PIPPO000    00:27:07
PIPPO000    00:27:07
PIPPO000    00:26:04
PIPPO000    00:26:04
PIPPO000    00:26:04
BALUBABA    03:02:22
BALUBABA    03:33:29
ZORROBIS    07:56:34
ZORROBIS    07:58:13
ZORROBIS    07:59:06
ZORROBIS    18:17:29
ZORROBIS    18:32:23
ZORROBIS    18:36:50
我希望按数据1分组,并根据24小时计算每个对象的平均值

ZORROBIS的结果示例我希望在我的excel中有两个相同的结果:

ZORROBIS    07:57:58
ZORROBIS    18:28:54
我使用了dplyr和lubridate,但没有成功。
感谢所有能够帮助我获得所需结果的人。

我们可以使用
as.ITime
转换为'Time'对象,然后在按'DATA1'和'DATA2'的
小时进行分组后取
平均值

library(data.table)
library(dplyr)
df1 %>%
   mutate(DATA2 = as.ITime(DATA2)) %>%
   group_by(DATA1, hour = hour(DATA2)) %>%
   summarise(DATA2 = mean(DATA2)) %>%
   select(-hour)
# A tibble: 7 x 2
# Groups:   DATA1 [4]
#  DATA1    DATA2   
#  <chr>    <ITime> 
#1 BALUBABA 03:17:55
#2 PAPERINO 03:27:46
#3 PAPERINO 04:43:47
#4 PAPERINO 05:29:29
#5 PIPPO000 00:26:40
#6 ZORROBIS 07:57:57
#7 ZORROBIS 18:28:54
数据
df1非常感谢您的回复,但是当我尝试执行您向我建议的代码时,我收到了以下错误:mutate_impl(.data,dots)中的错误:求值错误:字符串不是标准的明确格式。@在我的帖子中,我用
data
显示了可复制的示例。无法复制我从csv文件df1@use Here中的数据帧开始,我正在使用您帖子中的数据副本,我无法访问您的Cdrive@use你能做到吗。要共享到csv文件的链接,或使用
dput
显示前几行,即
dput(head(df1,20))
setDT(df1)[, .(DATA2 = mean(as.ITime(DATA2))), by = .(DATA1, hour = hour(as.ITime(DATA2)))]
df1 <- structure(list(DATA1 = c("PAPERINO", "PAPERINO", "PAPERINO", 
"PAPERINO", "PIPPO000", "PIPPO000", "PIPPO000", "PIPPO000", "PIPPO000", 
"PIPPO000", "PIPPO000", "BALUBABA", "BALUBABA", "ZORROBIS", "ZORROBIS", 
"ZORROBIS", "ZORROBIS", "ZORROBIS", "ZORROBIS"), DATA2 = c("05:29:29", 
"04:43:47", "04:43:47", "03:27:46", "00:27:07", "00:27:07", "00:27:07", 
"00:27:07", "00:26:04", "00:26:04", "00:26:04", "03:02:22", "03:33:29", 
"07:56:34", "07:58:13", "07:59:06", "18:17:29", "18:32:23", "18:36:50"
)), class = "data.frame", row.names = c(NA, -19L))