全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4045 6
2010-08-27
/*缺失值统一修改为0*/
data numbers;                                                           
  input var1 var2 var3;    /*三个变量全部是数值型*/                                               
datalines;                                                              
7 1 4                                                                  
. 0 8                                                                  
9 9 .                                                                  
5 6 2                                                                  
8 3 0                                                                  
;                                                                                                                                          
data nomiss(drop=i);                                                   
  set numbers;                                                            
  array testmiss(*)  _numeric_;  /*创建数组,数值的元素为本次数据集中所有数值型变量*/                                          
  do i = 1 to dim(testmiss); /*循环,利用DIM函数获得数组的元素个数*/                                             
    if testmiss(i)=. then testmiss(i)=0;  /*对每次读一个观测,对观测里面的每一个变量进行判断*/                                 
  end;                                                                    
run;                                                                    
proc print;
run;

/*将0替换成缺失值*/
data deptnum;                              
  input dept qtr1 qtr2 qtr3 qtr4;            
datalines;                                 
101 3 0 4 9                                
410 8 7 5 8                                
600 0 0 6 7                                
700 6 5 0 9                                
901 3 8 7 0                                
;                                                                              
data nozero(drop=i);                       
  set deptnum;                             
  array testzero(*) qtr1-qtr3;      
  do i = 1 to dim(testzero);                 
    if testzero(i)=0 then testzero(i)=.;      
  end;                                       
run;
proc print;
run;
学习之处:
1.数组的使用,以及数组DIM函数,注意如何一次确定数组内的元素以及元素的属性,这里注意的是数组的元素必须一致,要么全部是数值
要么为字符
2.DO 循环在SET机制中的应用。
二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-28 09:01:57
1# crackman

斑竹真是笔耕不缀呀,学习了,谢谢!

建议适当的时候集结成集,发行单行本,这样岂不是功德无量?!
二维码

扫码加我 拉你入群

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

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

2010-8-31 13:49:35
数组这种东西,一般更喜欢隐数组do over 来得爽些
二维码

扫码加我 拉你入群

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

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

2010-9-10 12:52:34
楼上说得对do over 更简单点。
复制代码
二维码

扫码加我 拉你入群

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

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

2010-9-10 13:51:59
请教楼主,像这种提换missing value的,用date set可以做,用micro也可以做,那哪个方法更好些呢?
二维码

扫码加我 拉你入群

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

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

2010-9-10 14:01:54
回楼上,是不是MACRO也能做
如果是
那也应该是借由data步或是某个过程步完成的
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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