2013-02-08 82 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”中的''部分? –