2017-01-25 15 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 

如果我刪除列timestamp(這是POSIXlt型的),那麼它將很好地工作。

但是...... diff(df$timestamp)運作良好:

Time differences in secs 
[1] 69 59 

所以,我缺少什麼?

+1

您是否需要此輸出? 'c(NA,diff(df $ timestamp))' –

+1

還是這個? sapply(df,diff)'? – Sotos

+1

@RonakShah'c(NA,diff(df $ timestamp))'很好 –

回答

1

您在使用apply時需要小心,因爲它在轉換爲矩陣之前先進行定義。由於它將你的對象轉換爲矩陣,所以不可能在那裏保存日期。改爲使用sapply,即

sapply(df, diff) 
相關問題