R POSIX%H:%M:%S时间平均值

时间:2015-07-29 20:52:35

标签: r datetime time posix average

我有一个字符时间的数据框,我需要按提供商进行平均,但我不确定如何仅使用没有日期的时间来平均它们。对于以下示例:

provider   time
USA       9:26:46
USDA      9:26:18
USDA      9:10:17
OIL       10:00:00
USA       6:20:56
USDA      7:19:13
OIL       11:00:00

OIL的正确输出是10:00到11:00之间的平均值,看起来像是:

provider     average
OIL          10:30

有没有人知道如何在不使用POSIX合并日期的情况下平均时间?

1 个答案:

答案 0 :(得分:1)

mean按预期工作。您可以将日期格式化为%H:%M:%S之后。

df <- read.table(text="provider   time
USA       9:26:46
USDA      9:26:18
USDA      9:10:17
OIL       10:00:00
USA       6:20:56
USDA      7:19:13
OIL       11:00:00",head=TRUE)

df$time <- as.POSIXct(df$time,format="%T",origin="1970-01-01")
format(as.POSIXct(tapply(df$time,df$provider,mean),origin="1970-01-01"),format="%H:%M:%S")

       OIL        USA       USDA 
"10:30:00" "07:53:51" "08:38:36" 

获取提供者&#39;名称:

m <- format(as.POSIXct(tapply(df$time,df$provider,mean),origin="1970-01-01"),format="%H:%M:%S")
m <- as.data.frame(m)
m$provider <- row.names(m)