2015-10-21 66 views
0

R彙總函數如何彙總表示爲HH:MM:SS字符串的時間值?R彙總函數和時間

例如,導入下面的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 

回答

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 
2

由於「時間」列存儲爲字符串,因此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)

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 
+0

OP只想要時間,沒有日期。 –