全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6536 8
2010-03-06
编制程序:
3个变量d1-d3,数据如下:
1      2       7
2      3       .
3      .         4
要求:如果发现缺失值,即用该行数据的平均值代替,输出结果如下:
1       2       7
2       3       2.5
3       3.5     4
我的程序如下:
data;
input d1-d3;
array s d1-d3;
total=d1+d2+d3;
do i=1 to 3;
if s=.  then s=total/3;
end;
cards;
1      2       7  
2      3       .
3      .         4
;
run;
proc print;
run;
但是结果出不来,求高手请教!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-6 19:21:11
total=d1+d2+d3;
计算的是非缺失变量的和
既然D2 D3都有缺失
就不能那样计算了
二维码

扫码加我 拉你入群

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

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

2010-3-6 20:02:26
data test(drop=i);
input d1-d3@;
array s{3} d1-d3;
do i=1 to 3;
if s(i)=. then d=i ;
end;
cards;
1      2       7  
2      .       4
3      4       .
;
run;
data a (drop=d);
set test;
if d=2 and d2=. then d2=(d1+d3)/2;
if d=3 and d3=. then d3=(d1+d2)/2;
proc print;
run;
二维码

扫码加我 拉你入群

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

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

2010-3-6 20:03:50
只是一个抛砖引入的作用,希望有牛人来写出更好的程序
二维码

扫码加我 拉你入群

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

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

2010-3-6 22:10:30
crackman 发表于 2010-3-6 19:21
total=d1+d2+d3;
计算的是非缺失变量的和
既然D2 D3都有缺失
就不能那样计算了
SAS has many statistic function you can use with a array or a variable list.

Here is an example.

data;
input d1-d3;
array s(*) d1-d3;
n=n(of s(*));
mean=mean(of s(*));
sum=sum( of s(*));
do i=1 to dim(s);
  if s(i)=. then s(i)=mean;
end;
drop i;
cards;
1      2       7  
2      3       .
3      .         4
;
run;
proc print;
run;
二维码

扫码加我 拉你入群

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

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

2010-3-6 22:27:56
第一部分定位缺失值的位置,很值得学习。谢谢!
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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