全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2296 5
2013-07-08
悬赏 2500 个论坛币 已解决
有很多个SHEET,需要对SHEET里面的一列数据进行就近填补,数据如下:

obs .
1 .
2 566
3 .
4 .
5 .
6 .
7 .
8 .
9 .
10 .
11 998
12 .
.... .
n .

想达到如下目的:1)就近填补缺失值,整列都要填满。
2)如果是连续的缺失值,比如OBS3-OBS10,离上面近的用上面的值填补,离下面近的用下面的填补。
2)如果缺失值里离上下的值一样近,那么就用上面的填补。

跪求高手,2500论坛币相送。



最佳答案

moyunzheng 查看完整内容

用SQL,代码可能更加简单一些
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-7-8 10:09:23
用SQL,代码可能更加简单一些
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-8 10:35:31
是不是这个意思:
data test;
    do value=.,566,.,.,.,.,.,.,.,.,998,.,.,.,1200,.;
           origvalue=value;
           output;
        end;
run;

data test1;
   obs=_n_;
   set test;
   retain tmp num;
   flag=missing(value);

   *** Previous non-missing;
   if flag=0 then do;
       tmp=value;
           num=0;
        end;
        else if flag=1 then do;
            num+1;
                value=tmp;
        end;
run;

proc sort data=test1;
  by descending obs;
run;

data test2;
    set test1;
        by descending obs;
        retain tmp1 num1 num2;
    *** Next non-missing;
        if flag=0 then do;
        tmp1=value;
                num1=0;
        end;
        else if flag=1 then do;
            if num1=0 then num2=int(num/2);
        num1+1;
        if num1 <= num2 and ^missing(tmp1) then value=tmp1;
                if missing(value) then value=tmp1;
        end;
        keep obs origvalue value;
run;

proc sort data=test2;  
    by obs;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-8 11:06:48
pobel 发表于 2013-7-8 10:35
是不是这个意思:
data test;
    do value=.,566,.,.,.,.,.,.,.,.,998,.,.,.,1200,.;
这个应该能解决一个SHEET的问题,不过我的是很多个SHEET呢,那该怎么办呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-8 11:31:35
moyunzheng 发表于 2013-7-8 11:19
用SQL,代码可能更加简单一些
多个SHEET的话,如何处理
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-8 12:57:21
infile为输入的excel文件,outfile为输出的excel文件
需要修改的变量名为value,新生成的变量名为new_value,这个可以修改
测试过,可用。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群