我有以下几年的数据:
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小时用于每个日期(为了简短起见,没有显示)。提前谢谢你!
发布于 2021-06-11 00:17:34
让我们假设有某种类型的指示器来指示时间更改发生的时间。由于我们知道它位于HE2和HE3,因此我们将在本例中直接使用值2和3。取两个值的平均值就是简单地将它们相加并除以2。
我们将在变量sum_values中存储HE的值。接下来,我们将检查我们在哪个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,那么您需要在临时保留变量中继续使用这些变量。
https://stackoverflow.com/questions/67924625
复制相似问题