如何在R中每30分钟进行汇总 [英] How to aggregate every 30 minutes in R
问题描述
我陷入了困境。我需要将每分钟的数据汇总到每30分钟的数据中。我的数据框是这样的:
I am stuck in R. I need to aggregate every minute data into every 30 minutes. My data frame is like this:
Date Time Power
2008-10-11 23:57:00 0.376
2008-10-11 23:58:00 0.374
2008-10-11 23:59:00 0.374
2008-10-12 0:00:00 0.334
2008-10-12 0:01:00 0.330
...
2008-12-13 19:24:00 1.390
2008-12-13 19:25:00 1.370
2008-12-13 19:26:00 1.368
2008-12-13 19:27:00 1.362
2008-12-13 19:28:00 1.352
2008-12-13 19:29:00 1.360
...
基本上,我有2008年的500,979行数据。每分钟给出一个功效值。为了进行时间序列,我需要每30分钟汇总一次数据。最终我将得到约17,520行。我的问题是:
Basically, I have 500,979 rows of data for 2008. Every minute gives a power value. In order to do Time Series, I need to aggregate my data per 30 minutes. That would give me around 17,520 rows in the end. My questions are:
-
当功率列缺少某些值时,是否可以绘制时间序列?
Is it possible to plot time series when you have some missing values for the Power column?
如何在30分钟前汇总Power值? (例如0:00:00至0:29:00; 0:30:00至0:59:00)
How to aggregate the Power value by 30 minutes please? (e.g., 0:00:00 to 0:29:00; 0:30:00 to 0:59:00)
非常感谢!
推荐答案
使用 dplyr
您可以做下一个(您可以将平均值
更改为聚合函数):
With dplyr
you can do the next (you can change mean
to your aggregation function):
df %>%
mutate(DateTime = as.POSIXct(paste(Date, Time))) %>%
group_by(DateTime = cut(DateTime, breaks="30 min")) %>%
summarize(Power = mean(Power))
将导致下一个输出:
DateTime Power
<fctr> <dbl>
1 2008-10-11 23:57:00 0.3576
2 2008-12-13 18:57:00 1.3760
3 2008-12-13 19:27:00 1.3580
这篇关于如何在R中每30分钟进行汇总的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!