SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 670|回复: 3
打印 上一主题 下一主题

关于变量的删除

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-4-13 20:14:18 | 只看该作者

关于变量的删除

有N多个数据集,里面都有60多个变量,我要做的是:

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

谢谢!
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
沙发
发表于 2009-4-16 16:34:43 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-4-16 23:38:08 | 只看该作者

Re: 关于变量的删除

谢谢!很好用!
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
地板
发表于 2009-4-17 17:14:02 | 只看该作者

Re: 关于变量的删除

发现写错一个地方
if _n_=2 ;
应该是
if _n_=&obs.;
不过obs=2的时候不影响,嗯
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 14:01 , Processed in 0.073489 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表