我正在使用Kaggle數據集進行自行車共享。我想編寫腳本,將我的預測值與訓練數據集進行比較。我希望比較每年每月的平均值。提取並比較R中日期的列數據
訓練數據集,我稱之爲DF看起來是這樣的:
datetime count
1 2011-01-01 00:00:00 16
2 2011-01-11 01:00:00 40
3 2011-02-01 02:00:00 32
4 2011-02-11 03:00:00 13
5 2011-03-21 04:00:00 1
6 2011-03-11 05:00:00 1
我的預測值,我叫子是這樣的:
datetime count
1 2011-01-01 00:00:00 42
2 2011-01-11 01:00:00 33
3 2011-02-01 02:00:00 33
4 2011-02-11 05:00:00 36
5 2011-03-21 06:00:00 57
6 2011-03-11 07:00:00 129
我已經使用了分離年份和月份lubridate包。然後將月份日期連接成一個新列。我用新的列和分裂,然後用lapply找到意思。
library(lubridate)
df$monyear <- interaction(
month(ymd_hms(df$datetime)),
year(ymd_hms(df$datetime)),
sep="-")
s<-split(df,df$monyear)
x <-lapply(s,function(x) colMeans(x[,c("count", "count")],na.rm=TRUE))
但是,這給了我每月的平均年組合嵌套在一個列表中,這樣不容易比較。我想要的是:
year-month train-mean sub-mean diff
1 2011-01 28 37.5 9.5
2 2011-02 22.5 34.5 12
3 2011-03 1 93 92
有沒有更好的方法來做到這一點?
請提供一個可重複的示例。你想加入飛蛾/年,但你提供了同一日期的小時數據集。無論如何,這裏所需要的只是一個簡單的合併,就像我看到的那樣。你可以同時使用'data.table's二進制連接和'by = .EACHI'結合執行這兩個操作。 –
謝謝你的建議,我已經修改了這個問題,使它具有可重現性。你有可能擴展你的答案嗎? –
看到我的答案。雖然請記住'37.5-28!= 15.5' –