全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1019 3
2015-04-22
有两个数据集A 和B 分别有三个变量
数据集A
a1 a2 a3
1  .     3
.    2   1
2    1   .
1  .     3
.    2   1
2    1   .

数据集B
b1 b2 b3
2    1   1
1    2   1
现想用数据集B中的数据依次来填补数据集A中的缺失,形成下面数据集C这样的结果,怎么用SAS实现?谢谢
数据集C
a1 a2 a3
1   1    3
2    2   1
2    1   1
1    2   3
1    2   1
2    1   1






二维码

扫码加我 拉你入群

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

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

全部回复
2015-4-22 21:39:54
自己回复一下  求助
二维码

扫码加我 拉你入群

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

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

2015-4-22 21:51:39
方法一:hash,个人认为是最好的方法,不过不想写了。
方法二:iml,也不错,不过也不想写了。
方法三:macro,一个普遍大众化的方法,就写一下:
%macro a;
        data t;
                set a;
                row=_n_;
        run;
        %do i=1 %to 3;
        data t1 t2;
                set t(keep=row a&i);
                if a&i=. then output t2;
                else output t1;
        run;
        data  t2;
                merge t2 b(keep=b&i rename=(b&i=a&i));
        run;
        data X;
                set t1 t2;
                by row;
        run;
        %if &i eq 1 %then %do;
                data C;
                        set X(drop=row);
                run;
        %end;
        %else %do;
                data C;
                        merge C X(drop=row);
                run;
        %end;
        %end;
%mend a;
%a;
二维码

扫码加我 拉你入群

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

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

2015-4-22 22:24:56
learsaas 发表于 2015-4-22 21:51
方法一:hash,个人认为是最好的方法,不过不想写了。
方法二:iml,也不错,不过也不想写了。
方法三:m ...
非常感谢
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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