R POSIX %H:%M:%S 时间平均值
R POSIX %H:%M:%S Time 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 计算时间而不包含日期?
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"
获取提供者的名称:
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)
我有一个字符时间数据框,我需要按提供者对其进行平均,但我不确定如何仅使用不带日期的时间对它们进行平均。对于以下示例:
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 计算时间而不包含日期?
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"
获取提供者的名称:
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)