R汇总函数如何汇总表示为HH:MM:SS字符串的时间值?
例如,导入以下CSV文件时:
name,time
name-a,1:00:00
name-b,1:15:00
name-c,1:30:00
name-d,1:45:00
name-e,2:00:00
摘要功能的默认使用"仅"将HH:MM:SS列为不同的字符串。
> summary(times)
name time
name-a:1 1:00:00:1
name-b:1 1:15:00:1
name-c:1 1:30:00:1
name-d:1 1:45:00:1
name-e:1 2:00:00:1
我希望摘要函数将时间理解为HH:MM:SS时间值并显示类似于以下内容的摘要:
> summary(times)
time
Min. :1:00:00
1st Qu.:1:15:00
Median :1:30:00
Mean :1:30:00
3rd Qu.:1:45:00
Max. :2:00:00
答案 0 :(得分:3)
尝试chron
包及其times
功能。
times$time<-times(times$time)
summary(times)
# name time
#name-a:1 Min. :01:00:00
#name-b:1 1st Qu.:01:15:00
#name-c:1 Median :01:30:00
#name-d:1 Mean :01:30:00
#name-e:1 3rd Qu.:01:45:00
# Max. :02:00:00
答案 1 :(得分:2)
自&#39;时间&#39;列存储为字符串,R无法计算任何汇总统计信息。 只需将您的时间戳转换为任何适当的时间格式。
library(lubridate)
times <- data.frame(name = c("name-a",
"name-b",
"name-c",
"name-d",
"name-e"),
time = c("1:00:00",
"1:15:00",
"1:30:00",
"1:45:00",
"2:00:00"))
times$time <- hms(times$time)
summary(times)
输出:
> summary(times)
name time
name-a:1 Min. :1H 0M 0S
name-b:1 1st Qu.:1H 15M 0S
name-c:1 Median :1H 30M 0S
name-d:1 Mean :1H 30M 0S
name-e:1 3rd Qu.:1H 45M 0S
Max. :2H 0M 0S
这里我使用lubridate包作为示例,但还有其他选项(检查?as.POSIXct或?strptime)
答案 2 :(得分:0)
您可以尝试使用strptime
功能,然后使用summary(times)
>times$time = strptime(times$time,%H:%M:%S")
> summary(times)
name time
name-a:1 Min. :2015-10-21 01:00:00
name-b:1 1st Qu.:2015-10-21 01:15:00
name-c:1 Median :2015-10-21 01:30:00
name-d:1 Mean :2015-10-21 01:30:00
name-e:1 3rd Qu.:2015-10-21 01:45:00
Max. :2015-10-21 02:00:00