全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4160 3
2010-09-09
悬赏 30 个论坛币 已解决
我有一个data set 叫做missing, 里面每个id对应的变量v1 - v5 都有缺省值。其中id是a的只有v1,v2和v5有缺省值,id是b的只有v1和v3有缺省值,id是c的v2 - v5都是缺省值

data missing;
input id$ v1 v2 v3 v4 v5;
datalines;
a 1 . 1 3 1
a . 2 1 4 2
a . 4 5 2 8
a 1 5 2 3 .
b . 9 2 3 2
b 5 9 2 4 4
b . 3 . 5 3
c 2 . . . .
;


接下来我根据每个id都有一个data set是补全所有缺省值的。例如:
data complete_a;
input id$ v1 v2 v5;
  datalines;
a 1 2 1
a 2 2 2
a 3 4 8
a 1 5 6
;

data complete_b;
input id$ v1 v3 ;
  datalines;
b 1  2
b 5  2
b 3  4  
;
data complete_c;
input id$  v2 v3 v4 v5;
  datalines;
c 2 3 4 7
;
run;


最终我需要生成一个数据表格, 把所有的缺省值都补到原来的表格中去,如下
data complete;
input id$ v1 v2 v3 v4 v5;
datalines;

a 1 2 1 3 1
a 2 2 1 4 2
a 3 4 5 2 8
a 1 5 2 3 6
b 1 9 2 3 2
b 5 9 2 4 4
b 3 3 4 5 3
c 2 2 3 4 7

;
run;

实际问题中我的数据是有几千个id,每个id都有类似complete_a, complete_b, complete_c那样补全缺省值的表格。所以我想能否写成一个do 循环自动把补全缺省值的表格中的列替换原有的列。我觉得难点在于每个id缺省值出现的列都不一样。

请教高手!

最佳答案

soporaeternus 查看完整内容

楼主试试......
二维码

扫码加我 拉你入群

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

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

全部回复
2010-9-9 12:19:11
复制代码
楼主试试......
二维码

扫码加我 拉你入群

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

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

2010-9-10 01:00:37
我只知道怎么用micro 替换missing value. 我不清楚你的missing value 是用什么方法计算和替换的。我只能提供一点思路,下面的程序可以把所以的missing value替换成一个相同的值。如果是根据不同的id,不同的observation,missing value 的替换值都不一样的话,是否可以在这个的基础上做下改动呢,你可以试试看。
%MACRO REPLACE_MV(cols,mv=.,rplc=0);
ARRAY varlist {*} &cols;
DO _i = 1 TO dim(varlist);
IF varlist{_i} = &mv THEN varlist{_i}=&rplc;
END;
DROP _i;
%MEND;
二维码

扫码加我 拉你入群

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

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

2010-9-10 07:32:25
That's cool!! 2# soporaeternus
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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