给出:
- 工具: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天存储桶。