sas - SAS 连续观察中的两个平均值 - 考虑到下降时间变化的额外小时
问题描述
对于几年的日期,我有如下数据:
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,因此我们将在此示例中直接使用 2 和 3 的值。平均两个值只是将它们相加并除以二。
我们将 的值存储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
那么您需要将这些变量转移到临时保留变量中。
推荐阅读
- javascript - 在节点中读取标准输入时面临问题
- sed - 如果匹配正则表达式从文件中删除行
- kotlin - 使用 MPAndroidChart 个性化图表?
- python - 通过前两个元素在列表列表中搜索列表
- javascript - 应用程序因“考虑将错误边界添加到树”错误而崩溃
- docker-compose - 使用 docker stack 在预定义主机上运行特定容器
- rust - 如何在 Rust 的宏中使用多个宏?
- reporting-services - SSRS 手动选择传递给多值子报表参数的值
- google-sheets - 在 168000+ 行的数组中具有多个结果的嵌套 IF 语句
- python - Python lambda 使用错误的值