SAS中文论坛

标题: 关于变量的删除 [打印本页]

作者: shiyiming    时间: 2009-4-13 20:14
标题: 关于变量的删除
有N多个数据集,里面都有60多个变量,我要做的是:

当某个变量的前两个观测值为空值时,删除这个变量,请问有什么好的方法吗?

谢谢!
作者: Qiong    时间: 2009-4-16 16:34
标题: Re: 关于变量的删除
随便写个凑合看看。
eg1是要改的data名,eg1是放改后的data名,obs=2表示选前2个观测进行判断.
[code:2gunwr7q]
%macro check(old=,obs=,new=);
proc contents data=&old. out=temp (keep=name) ;
run;

proc sql noprint;
select name,count(*) into: name  separated by ' ',: no
from temp;
quit;

%let list=;
%let i=1;

%do %while ( &i<=&no);
%let t=%scan(&name,&i);
data _null_;
set &old.(obs=&obs keep=&t);  
temp=lag(&t);
if _n_=2 ;
if missing(&t) and missing(temp) then call symput('list', "&list."||" "||"&t." );
run;  
%let i=&i+1;
%end;

data &new.;
set &old.;
drop &list;
run;
%mend check;
  

%check(old=eg1, obs=2,new=eg2);

[/code:2gunwr7q]
作者: shiyiming    时间: 2009-4-16 23:38
标题: Re: 关于变量的删除
谢谢!很好用!
作者: Qiong    时间: 2009-4-17 17:14
标题: Re: 关于变量的删除
发现写错一个地方
if _n_=2 ;
应该是
if _n_=&obs.;
不过obs=2的时候不影响,嗯




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2