2017-01-25 6 views
0

私はこの質問に似た問題がありますR how can I calculate difference between rows in a data frame;私はこのコードRでは、列がPOSIXltの場合、データフレームの行をどのようにして比較できますか?

df <- data.frame(timestamp=c("2015-02-02 09:53:44","2015-02-02 09:54:53","2015-02-02 09:55:52"),cnt=c(1,2,3)) 
df$timestamp <- strptime(df$timestamp, "%Y-%m-%d %H:%M:%S") 
apply(df , 2 , diff) 

でこのソリューションhttps://stackoverflow.com/a/16212173/15485を適用しようが、私はこのエラーを取得:

Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] : 
    non-numeric argument to binary operator 

私は(タイプPOSIXltである)列timestampを削除した場合、それが正常に動作します。

しかし... diff(df$timestamp)がうまく機能している:

Time differences in secs 
[1] 69 59 

だから、私は何をしないのですか?

+1

出力として必要ですか? 'c(NA、diff(df $ timestamp))' –

+1

またはこれ? 'サプリー(df、diff)'? – Sotos

+1

@RonakShah 'c(NA、diff(df $ timestamp))'は大丈夫です –

答えて

1

applyを使用する場合は、定義する前にまずマトリックスに変換するように注意する必要があります。あなたのオブジェクトを行列に変換するので、そこで日付を保持することは不可能です。代わりにsapplyを使用してください。つまり、

sapply(df, diff) 
関連する問題