私は以下のdplyrコードを使用して、1分間の時系列データから時間平均を生成しています。コードは何ヶ月も働いていますが、最近問題のある結果が出ています。次のいずれかの機能で変更されましたか:group_by()
、cut()
、またはsummarise()
?dplyr code "df%>%group_by(date = cut(date、breaks =" 1 hour "))"は望みの結果を生成しません。
df <- structure(list(date = structure(c(1505187300, 1505187360, 1505187420, 1505187480, 1505187540, 1505187600, 1505187660, 1505187720, 1505201580, 1505201640), class = c("POSIXct", "POSIXt"), tzone = "UTC"), co = c(0.149,0.149,0.149, 0.106, 0.149, 0.149, 0.192, 0.149, 0.149, 0.149), co2 = c(544L, 545L, 544L, 543L, 546L, 546L, 548L, 547L, 549L, 554L), VOC = c(22.55, 22.55, 22.8198, 23.2602, 22.9501, 23.2154, 23.4262, 23.0231, 23.0525, 22.7911), RH = c(77.02, 76.9, 77.2, 76.6, 76.99, 76.83, 77.13, 77.81, 77.48, 77.1), ugm3 = c(12.862, 13.408, 14.188, 12.342, 13.278, 12.81, 10.834, 13.018, 12.992, 12.498), temp = c(62.06, 62.02, 62.02, 61.98, 61.94, 61.9, 61.86, 61.78, 61.8, 61.8)), .Names = c("date", "co", "co2", "VOC", "RH", "ugm3", "temp"), row.names = c(NA, 10L), class = "data.frame")
new_df <- df %>%
group_by(date = cut(date, breaks = "1 hour")) %>%
summarize(co = mean(co), co2 = mean(co2), VOC = mean(VOC), RH = mean(RH), ugm3 = mean(ugm3), temp = mean(temp))
new_df
予想される出力:
expected_output <- structure(list(date = structure(c(1L, 5L), .Label = c("2017-09-12 03:00:00", "2017-09-12 04:00:00", "2017-09-12 05:00:00", "2017-09-12 06:00:00", "2017-09-12 07:00:00"), class = "factor"), co = c(0.149, 0.149), co2 = c(545.375, 551.5), VOC = c(22.97435, 22.9218), RH = c(77.06, 77.29), ugm3 = c(12.8425, 12.745), temp = c(61.945, 61.8)), class = c("tbl_df", "tbl", "data.frame"), .Names = c("date", "co", "co2", "VOC", "RH", "ugm3", "temp"), row.names = c(NA, -2L))
実際の出力:今週の
actual_output <- structure(list(co = 0.149, co2 = 546.6, VOC = 22.96384, RH = 77.106, ugm3 = 12.823, temp = 61.916), .Names = c("co", "co2", "VOC", "RH", "ugm3", "temp"), class = "data.frame", row.names = c(NA, -1L))
前に、このコードは、新しいdf
2との観測を生成しているだろう、1のために03:00:00
時間、の1つ時。 group_by()
関数は、新しい時間別タイムスタンプを正しく割り当てているように見えますが、summarize()
関数は正しく動作していません。どんな洞察にも感謝します。ありがとう!
時系列データを特定の間隔で集約するより堅牢な代替手段がある場合、私はすべて耳にします!
私はあなたの期待する出力を得ます、あなたは何を得ることができますか? –
良いアイデア、提案のおかげで! – spacedSparking
group_byがスキップされたようです –