R POSIX%H:%M:%S平均时间 [英] R POSIX %H:%M:%S Time Average

查看:57
本文介绍了R POSIX%H:%M:%S平均时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a data frame of character times that I need to average by provider, but I'm not sure how to average them using just the time without the date. For the example below:

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之间的平均值,并且看起来像:

The correct output for OIL would be the average between 10:00 and 11:00, and would look like:

provider     average
OIL          10:30

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

Does anyone know how to average just time without incorporating date using POSIX?

推荐答案

平均值可以正常工作.之后,您可以将日期格式化为%H:%M:%S.

mean works as expected. You can format the date to %H:%M:%S afterwards.

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" 

获取提供商名称:

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)

这篇关于R POSIX%H:%M:%S平均时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆