2013-02-08 121 views
2

我剛剛開始於R.將秒轉換爲持續時間

我的數據是在csv文件中。這是一個摘錄:

p, t, a,   b,   c 
p01, t1, 4292.226015, 4292.226015, 0.0 
p01, t3, 693.795607, 693.795607, 0.0 
p02, t1, 262.798468, 262.798468, 0.0 
p02, t2, 113.381499, 113.381499, 0.0 
p02, t3, 325.854107, 325.854107, 0.0 
p02, t4, 428.073246, 428.073246, 0.0 
p02, t5, 319.010848, 319.010848, 0.0 

...和我加載這樣的:

data <- read.csv(file='data.csv',head=TRUE,sep=',') 

最後三列是持續時間值(單位:秒),並且我想他們喜歡成爲lubridate的duration對象。我怎樣才能做到這一點?

我試着加載CSV,這樣轉換後的列:

data$a <- dseconds(data$a) 
data$b <- dseconds(data$b) 
data$c <- dseconds(data$c) 

...起初它似乎工作。除了當我要求一個總結,有幾個警告,我有一些麻煩解釋:

> summary(tasks) 
group task a    b    c 
p01:2 t1:2 Min. : 113.4 Min. : 113.4 Min. :0 
p01:5 t2:1 1st Qu.: 290.9 1st Qu.: 290.9 1st Qu.:0 
     t3:2 Median : 325.9 Median : 325.9 Median :0 
     t4:1 Mean : 919.3 Mean : 919.3 Mean :0 
     t5:1 3rd Qu.: 560.9 3rd Qu.: 560.9 3rd Qu.:0 
      Max. :4292.2 Max. :4292.2 Max. :0 
Warning messages: 
1: In quantile.default(object) : 
    Class 'Duration' has no 'names' slot; assigning a names attribute will create an invalid object 
2: In summary.default(X[[3L]], ...) : 
    Class 'Duration' has no 'names' slot; assigning a names attribute will create an invalid object 
3: In summary.default(X[[3L]], ...) : 
    Setting class(x) to multiple strings ("summaryDefault", "table", ...); result will no longer be an S4 object 
> 

回答

2

這是一個警告。該summary嘗試將時間對象轉換爲c("summaryDefault", "table")類 您可以複製這樣的:

class(data$a) <- c("summaryDefault", "table") 
Warning message: 
In class(dat$da) <- c("summaryDefault", "table") : 
    Setting class(x) to multiple strings ("summaryDefault", "table", ...); 
      result will no longer be an S4 object. 

您可以定義如何將Duration類強制到table類的例子。

setAs("Duration", "table", function(from) [email protected]) ## dummy coercion here 

現在我可以適用簡易無警告

summary(dat) 
     p     t     a    b    c   da  
Length:7   Length:7   Min. : 113.4 Min. : 113.4 Min. :0 n.vars :0  
Class :character Class :character 1st Qu.: 290.9 1st Qu.: 290.9 1st Qu.:0 n.cases:6435 
Mode :character Mode :character Median : 325.9 Median : 325.9 Median :0     
             Mean : 919.3 Mean : 919.3 Mean :0     
             3rd Qu.: 560.9 3rd Qu.: 560.9 3rd Qu.:0     
             Max. :4292.2 Max. :4292.2 Max. :0 
+0

您好,感謝。它不工作,不幸的是...(給出了相同的警告)。我想我明白調用''setAs()''應該做什麼。你能否向我解釋「@ .Data」中的''部分? –