通过执行平均和LOCF操作来获取new_variable?

时间:2016-07-18 14:39:06

标签: sas baseline

鉴于数据集:

data hello;
    input id value;
    cards;
    101 22
    101 44
    103 22
    104 22
    104 55
    106 22
    106 .
;
run;

我正在尝试按如下方式创建一个n变量和Dtype by Id变量:

Id  value Nvalue Dtype
101 22      
101 44      
          33    Average
103 22      
104 22      
104 55      
          38.5    Average
106 22      
106 .       
          22    LOCF

是否有任何可能的方法来获得上述输出。

1 个答案:

答案 0 :(得分:1)

这是我的尝试。我在示例中添加了一些观察结果,以便在更难以预测的模式中出现缺失值时向您显示结果。

data have;
    input id value;
    cards;
    101 22
    101 44
    103 22
    104 22
    104 55
    106 22
    106 .
    107 25
    107 .
    107 22
    108 .
    108 .
    109 10
    109 12
;
run;

proc sql;
    create table averages as
        select id, avg(value) as nvalue 
            from have
                group by id;
quit;

data want (drop=missing);
    set have averages;
    by id;
    retain missing;

    if first.id then
        missing=.;

    if not last.id and value=. then
        missing=1;
    length dtype $10;

    if last.id then
        do;
            if missing=1 then
                dtype="LOCF";
            else dtype="Average";
        end;
run;