r-SQL:将每小时的样本分块为7天的平均值



给出:

  • 工具:SQL Server,SSMS 2016,R
  • 数据:2017-12-31 23:00:00至2021-02-05 08:00:00的小时样本

想要:将数据分块到7天的块中,理想情况下与一年中的一周重合,并获取每个7天周期的平均值。愿意牺牲一些数据前端和/或后端。希望将数据频率从12x365点降低到每年52点。用于R.的最终用途

问题:A) SQL日期部分(周,…)方法不将2018年的前7天视为第1周。认为一周从一周中的某一天开始,而不一定是在1月1日。

B) 我怀疑SQL日期部分(周,…)会在几年的数据中分配重复的周值。所以,如果我按日期部分(周…)分组,它不会结合2018年、2019年、2020年和2021年的第一周吗?

以下是我的起始查询(AvgDate用于调试目的):

SELECT datepart(week,Date) Week,
FORMAT(AVG(HeadElev), '###.###') as AvgHeadEl,
COUNT(HeadElev) as Count,
FORMAT(AVG(datepart(Day, Date)), '##.###') as AvgDate
FROM [dbo].[Chickamauga] as CWL
WHERE '20171231' < Date AND Date <= '20181231' 
GROUP BY datepart(week,Date)
ORDER BY Week
GO

以下是我的表格(我从原始数据中分割了日期和时间):

CREATE TABLE [dbo].[SomeLake](
[Date] [date] NULL,
[HourCT] [time](0) NULL,
[HeadElev] [float] NULL,
[TailElev] [float] NULL,
[Flow] [float] NULL
) ON [PRIMARY]

再次尝试创建简单的7天样本块并获取平均值。(不是移动平均线,我只想要每7天块1个数据点。)我正试图将数据频率从(每小时数据降至每周数据。)

最终目标是将无法接受像365这样的每年高频率的已使用时间序列函数导入R。试图将频率降低到52,即每周数据。)

感谢您的帮助!

创建简单的7天样本块并获取平均值。

按以下方式分组:

1+datepart(dy,some_date)/7 week

它取一年中的某一天并执行整数除法,将它们分组为从0开始的7天存储桶。

相关内容

  • 没有找到相关文章

最新更新