- 你好
- 工具:SQL Server、SSMS 2016、R
- 数据:从2017年12月31日23:00:00至2021年2月5日08:00:00的每小时样本
需求:将数据分块为7天的块,最好与一年中的某周相一致,并获取每个7天期间的平均值。愿意牺牲一些前端和/或后端数据。希望将数据频率从每年12 x365个点降低到大约52个点。对于R中的最终用途。
问题:A)SQL datepart(week,...)方法不将2018年的前七天视为第1周。认为该周从一周中的某一天开始,而不一定是1月1日。
B)我怀疑SQL datepart(week,...)会在几年的数据中分配重复的周值。因此,如果我按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,即每周数据。)
感谢您的帮助!
1条答案
按热度按时间3hvapo4f1#
创建简单的7天样本块并获取平均值。
分组方式如下:
该函数获取一年中的某一天,并执行整数除法,将它们分组为从0开始的7天时段。