给予:
- 工具:SQL Server、SSMS 2016、R
- 数据:从 2017-12-31 23:00:00 到 2021-02-05 08:00:00 开始的每小时样本
想要:将数据分成 7 天的块,理想情况下与一年中的一周一致,并获取每个 7 天期间的平均值。愿意牺牲一些数据前端和/或后端。希望将数据频率从 12x365 点降低到每年 52 点。用于 R 中的最终用途。
问题(S):A)SQL datepart(week,...) 方法不将 2018 年的第一个 7 天视为第 1 周。认为该周从一周中的某一天开始,不一定在 1 月 1 日。
B) 我怀疑 SQL datepart(week,...) 将在几年的数据中分配重复的周值。因此,如果我按日期部分(周...)分组,它不会结合 2018 年、2019 年、2020 年、2021 年的第 1 周吗?
这是我的起始查询(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 个数据点。)我正在尝试将数据频率从(每小时数据降低到每周数据。)
最终目标是导入 R 并使用无法接受每年高频率(如 365)的时间序列函数。试图将频率降低到 52,即。每周数据。)
感谢您的帮助!