2016-09-20 7 views
2

私はlubridate-Durationsを使ってビデオの長さを保存しています。私は要約(動画)を呼び出した場合Lubridate Durationを使用したData.frameのまとめ

私は次のエラーを取得する:

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 . 

は、この問題を解決する方法はありますか?平均、トップエコーのような同じ機能を持つ潤滑剤を使用する。数値のようなものは良いでしょう。エラーはサイズのみ1250のdata.frameを持つと高い

答えて

1

あなたの例では再現できないoccures

、ここで私が使用した私のコードです。

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

と思われますが、問題はデータのサイズです。フレーム。 5の代わりに2000のサンプルを使用すると、同じエラーが発生しますか? 私のテストセットには1255のビデオが含まれているため、1250のサブセットで正常に動作しますが、5つではエラーが発生します(最後の5つのビデオは残りの部分と違いはありません) 説明はありますか? – barracuda317

+0

自分のコードを編集しました。 'as.numeric()'を使うと、エラーはなくなります。 –

+0

エラーは消滅しましたが、フォーマルクラスの期間をもう使用していないため、問題は解決しません。 私は自分のデータベースにDURATIONを数秒で保存しました。そして、それを 'dseconds()'を使ってRのDurationに変換します。 as.numericを呼び出すことは、以前の状況の後戻りです。 – barracuda317

関連する問題