设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1986|回复: 1

[软件咨询] 怎么用SAS删除重复的变量?

[复制链接]

2

主题

45

金钱

111

积分

入门用户

发表于 2017-7-11 11:39:16 | 显示全部楼层 |阅读模式
数据中有一些变量重复值达到90%,想把多余的删掉,怎么操作

10

主题

430

金钱

641

积分

初级用户

发表于 2017-7-11 14:48:03 | 显示全部楼层
  1. %macrovar_namelist(data=,tarvar=,dsor=);

  2. %letlib=%upcase(%scan(&data.,1,'.'));

  3. %letdname=%upcase(%scan(&data.,2,'.'));

  4. %globalvar_list var_num;

  5. proc sql ;

  6. create table &dsor.as

  7. select name

  8. from sashelp.VCOLUMN

  9. where left(libname)="&lib."and left(memname)="&dname."and lowcase(name)^=lowcase("&tarvar.");

  10. quit;

  11. %mend;

  12. %macrotest(data,tarvar,data_result,data_drop,rate);

  13. proc datasets lib=work;

  14. delete base;

  15. run;

  16. data base;

  17. length variable$100.;

  18. run;

  19. %var_namelist(data=&data.,/*coltype=num,*/tarvar=&tarvar.,dsor=aa);

  20. data _null_;

  21. set aa;

  22. call symput(compress("var"||left(_n_)),compress(name));

  23. call symput(compress("n"),compress(_n_));

  24. run;

  25. %put&n.;

  26. %doi=1%to&n.;

  27. %put&&var&i.;

  28. proc freq data=&data.(keep=&&var&i.) noprint;

  29. tables &&var&i./out=PERCENT_&&var&i.;

  30. /*(keep=PERCENT)*/

  31. run;

  32. proc sql;

  33. select max(PERCENT) into: max_percent from

  34. PERCENT_&&var&i.;

  35. quit;

  36. %if&max_percent>&rate.%then%do;

  37. data next;

  38. variable="&&var&i.";

  39. run;

  40. proc append base=base data=next force;

  41. run;

  42. %end;

  43. proc datasets lib=work noprint;

  44. delete PERCENT_&&var&i.;

  45. run;

  46. %end;

  47. data base;

  48. set base(where=(variable^=''));

  49. run;

  50. proc transpose data=base out=base1(drop=_name_);

  51. id variable;

  52. run;

  53. /*这步是删除单一变量超过90的重复值的缺失值的可以按照这个写下*/

  54. proc sql noprint;

  55. select name into :var_list separated by' '

  56. from sashelp.VCOLUMN

  57. where upcase(left(libname))="WORK"and UPCASE(left(memname))="BASE1";

  58. quit;

  59. %PUT&var_num1.;

  60. data &data_result.;

  61. set &data.;

  62. drop &var_list.;

  63. run;

  64. data &data_drop.;

  65. set &data.;

  66. keep &tarvar.&var_list.;

  67. run;

  68. %mend;
复制代码

回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

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