SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1151|回复: 2
打印 上一主题 下一主题

SAS宏在临床试验中应用-移除重复记录数据

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-8-24 14:54:30 | 只看该作者

SAS宏在临床试验中应用-移除重复记录数据

[code:9d4cb]%macro remove(data=,  /*原始数据集*/
               out= /*输出移除重复数据的数据集*/ );

proc sort in=&data out=&out noduplicates;
by _all_;
run;
proc print data=&out;
run;
%mend;

data kkk;
input id v1-v2;
datalines;
1  11  12
2  21  22
1  11  12
3  31  32
;
run;

%remove(data=kkk,out=out);[/code:9d4cb]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-10-1 09:14:51 | 只看该作者

collen管理员真好

[color=blue:58072]我来论坛没多少次,就发现collen的好几个程序好管用,
这种无私奉献的精神值得提倡![/color:58072]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-11-10 23:40:47 | 只看该作者

RE:Collon

谢谢,您的这个程序非常实用,我以前也编写了一个宏程序,但没有您的精练,向您学习。
[code:38cb0]%MACRO repeatd(data,var=,outdata=,prnopt=T);
options nodate nonumber;title;
%if &outdata= %then %let outdata=&data;;
%if &var= %then %do;
  proc iml;use &data;setin &data;
   xx=rowcat((contents()+" ")`); call symput ('var',xx);quit;
%end;
%let nv=%wordcnt(string=&var, delim=%str( ));
proc sort data=&data; by &var;
data &outdata;set &data;_tmp=0;
  %do i=1 %to &nv;
    %let nvi=%scan(&var, &i);if &nvi=lag(&nvi) then _tmp=_tmp+1;
  %end;
%if &prnopt=T %then %do;
  proc print;where _tmp=&nv;var &var;
   title "Duplicated Observations Were Deleted";run;title;
%end;
data &outdata;set &outdata;if _tmp=&nv then delete;drop _tmp;run;
%MEND repeatd;[/code:38cb0]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 07:07 , Processed in 0.069981 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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