首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS中连续观测中的平均两个值-考虑秋季时间变化的额外小时

SAS中连续观测中的平均两个值-考虑秋季时间变化的额外小时
EN

Stack Overflow用户
提问于 2021-06-10 23:54:58
回答 1查看 26关注 0票数 0

我有以下几年的数据:

代码语言:javascript
复制
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小时用于每个日期(为了简短起见,没有显示)。提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 00:17:34

让我们假设有某种类型的指示器来指示时间更改发生的时间。由于我们知道它位于HE2和HE3,因此我们将在本例中直接使用值2和3。取两个值的平均值就是简单地将它们相加并除以2。

我们将在变量sum_values中存储HE的值。接下来,我们将检查我们在哪个HE中。如果我们在2中,让我们删除该行,不做任何进一步的操作。如果我们在3中,让我们将该值替换为我们求和的总值,并将其除以我们平均的值的数量(在本例中为2)。然后我们将其HE的值设置为2。

代码语言:javascript
复制
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,那么您需要在临时保留变量中继续使用这些变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67924625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档