SAS连续观察中的两个平均值 - 考虑到下降时间变化的额外小时
Posted
技术标签:
【中文标题】SAS连续观察中的两个平均值 - 考虑到下降时间变化的额外小时【英文标题】:Average two values in consecutive observations in SAS - account for extra hour in fall time change 【发布时间】:2021-08-27 15:59:55 【问题描述】:我有几年的日期数据如下:
Date HE Value
04NOV2007 1 981.00
04NOV2007 2 925.00
04NOV2007 3 900.00
04NOV2007 4 875.00
04NOV2007 5 880.00
04NOV2007 6 894.00
04NOV2007 7 946.00
04NOV2007 8 982.00
04NOV2007 9 1051.00
04NOV2007 10 1122.00
04NOV2007 11 1167.00
04NOV2007 12 1194.00
04NOV2007 13 1203.00
04NOV2007 14 1199.00
04NOV2007 15 1200.00
04NOV2007 16 1194.00
04NOV2007 17 1203.00
04NOV2007 18 1238.00
04NOV2007 19 1379.00
04NOV2007 20 1402.00
04NOV2007 21 1357.00
04NOV2007 22 1300.00
04NOV2007 23 1205.00
04NOV2007 24 1093.00
04NOV2007 24 994.00
为了消除在秋季时间变化日期创建的额外观察,我需要平均 HE2 和 HE3 的值,用新值替换 HE2 的值,然后在移动另一个之前删除 HE3 观察小时。将 HE 值移动 1 是没有问题的,但我不确定完成平均 HE2 和 HE3 任务的最有效方法。在我的完整数据集中,每个日期都有 24 小时(为简洁起见,未显示)。提前谢谢!
【问题讨论】:
您是否总是尝试在 HE2 和 HE3 上执行此操作?平均 HE24 观察结果会不会有问题? 我被引导到平均 HE2 和 HE3,因为那是时间变化发生的时候。这是将用于预测的特定电力负荷数据,因此尽可能接近小时的实际值很重要。 【参考方案1】:让我们假设有某种指示时间变化发生的时间。由于我们知道它位于 HE2 和 HE3,因此我们将在此示例中直接使用 2 和 3 的值。取两个值的平均值就是将它们相加并除以 2。
我们会将HE
的值存储在变量sum_values
中。接下来,我们将检查我们在哪个 HE
中。如果我们在 2 中,让我们删除该行并且什么都不做。如果我们在 3 中,让我们用我们总结的总值替换该值,然后将它除以我们平均的值的数量(在本例中为 2)。然后我们将其 HE 的值设置为 2。
data want;
set have;
by date he;
if(HE IN(2,3) ) then do;
sum_values+value;
n_values+1;
if(HE = 2) then delete;
else if(HE = 3) then do;
value = sum_values/n_values;
HE = 2;
end;
end;
run;
如果您的数据与上述类似,则此方法有效,但如果您有其他相关变量依赖于 HE2
并需要替换 HE3
,那么您需要将这些变量转移到临时保留变量中。
【讨论】:
以上是关于SAS连续观察中的两个平均值 - 考虑到下降时间变化的额外小时的主要内容,如果未能解决你的问题,请参考以下文章