毎時データから最大値を取得し、それが発生した時刻を報告したい毎時データがあります。
これは私のデータフレームです:
dput(head(monthly_cpu,24))
structure(list(name = c("Daily-Peaks", "Daily-Peaks", "Daily-Peaks",
"Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks",
"Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks",
"Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks",
"Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks", "Daily-Peaks",
"Daily-Peaks"), date = structure(c(1315828800, 1315832400, 1315836000,
1315839600, 1315843200, 1315846800, 1315850400, 1315854000, 1315857600,
1315861200, 1315915200, 1315918800, 1315922400, 1315926000, 1315929600,
1315933200, 1315936800, 1315940400, 1315944000, 1315947600, 1316001600,
1316005200, 1316008800, 1316012400), class = c("POSIXct", "POSIXt"
), tzone = ""), cpu = c(5.6, 7.68, 8.64, 10.4, 11.36, 12, 12.16,
12.8, 13.28, 13.92, 7.2, 7.84, 9.28, 10.72, 11.04, 11.04, 10.56,
11.36, 10.72, 10.88, 1.76, 5.76, 9.6, 10.88), day = structure(c(15229,
15229, 15229, 15229, 15229, 15229, 15229, 15229, 15229, 15229,
15230, 15230, 15230, 15230, 15230, 15230, 15230, 15230, 15230,
15230, 15231, 15231, 15231, 15231), class = "Date"), max = c(13.92,
13.92, 13.92, 13.92, 13.92, 13.92, 13.92, 13.92, 13.92, 13.92,
11.36, 11.36, 11.36, 11.36, 11.36, 11.36, 11.36, 11.36, 11.36,
11.36, 12.48, 12.48, 12.48, 12.48)), .Names = c("name", "date",
"cpu", "day", "max"), row.names = c(NA, 24L), class = "data.frame")
day という別のフィールドを作成し、次のように data.table パッケージを使用してその日あたりの最大値を取得します。
monthly_cpu$day<-as.Date(monthly_cpu$date)
monthly_cpu<-data.table(monthly_cpu)
monthly_cpu<-monthly_cpu[,max:=max(cpu), by=day]
この時点で、日付 (as.POSIXct 形式) と各日の最大値を選択する必要があります。
最終的な month_cpu df フレームを次のようにする必要があります。
Date Max
2013-04-09 08:00:00 67.00
2013-04-10 13:00:00 50.00
2013-04-11 09:00:00 88.00
2013-04-12 12:00:00 100.00
2013-04-13 15:00:00 10.00
等
month_cpu データ フレームから日付と最大値を取得する方法はありますか?