2016-09-20 40 views
2

我正在使用lubridate-Durations來存儲視頻的持續時間。摘要數據幀與流露持續時間

我收到以下錯誤,如果我打電話摘要(視頻):

Error in sprintf("%ds (~%s %ss)", x, x2, unit, "s)") : 
    invalid format '%d'; use format %f, %e, %g or %a for numeric objects 

str(videos)說:

$ DURATION    :Formal class 'Duration' [package "lubridate"] with 1 slot 
    .. [email protected] .Data: num 602 760 1027 714 720 . 

是有辦法解決這一問題?使用像平均值,頂部等相同功能的lubridate。喜歡數字值會很好。

錯誤occures只有尺寸1250的data.frame和更高

回答

1

你舉的例子是不可複製的,這裏是我的代碼使用。

set.seed(1) 

DURATION = lubridate::dminutes(
    sample(0:300, 2000, replace = T) 
) 

videos <- data.frame(
    DURATION = DURATION 
) 

str(videos) 
# 'data.frame': 2000 obs. of 1 variable: 
# $ DURATION:Formal class 'Duration' [package "lubridate"] with 1 slot 
# .. [email protected] .Data: num 4740 6720 10320 16380 3600 ... 

summary(videos) 
# DURATION     
# Min. :0s      
# 1st Qu.:4320s (~1.2 hours)  
# Median :8700s (~2.42 hours) 
# Mean :8909s (~2.47 hours) 
# 3rd Qu.:13620s (~3.78 hours) 
# Max. :18000s (~5 hours)  
+0

看來,問題是data.frame的大小。如果您使用2000個樣本而不是5個,您會得到相同的錯誤? 這很有趣,因爲我的測試集包含1255個視頻,1250的子集運行良好,但有5個我得到錯誤(最後5個視頻與其他視頻沒有區別) 任何解釋? – barracuda317

+0

我編輯了我的代碼。當你使用'as.numeric()'時,錯誤消失了。 –

+0

錯誤消失了,但問題沒有解決,因爲您不再使用Formal類持續時間。 我已經在我的數據庫中以秒爲單位存儲了DURATION,並使用'dseconds()'將其轉換爲R在R中的持續時間。調用as.numeric是回退到之前的情況。 – barracuda317