楼主: zhangweibeckham
12428 20

如何改变SAS数据集中变量的位置? [推广有奖]

11
naruto_zw 发表于 2013-5-25 14:40:13 |只看作者 |坛友微信交流群
可~乐 发表于 2011-12-17 11:07
之前有过这样一个帖子,用retain时可以做的,不过要求无缺失值..
谢谢,这办法很方便。不过刚才试了一下,有缺失值也可以。。。

使用道具

12
fyfzhdsfdx 发表于 2013-6-13 21:29:34 |只看作者 |坛友微信交流群
ntsean 发表于 2011-12-17 21:56
如果变量名多的话我以前做过用 sashelp.column 来得到这个data的所有变量名,然后按照自己需要的来order好, ...
我sas不好,能不能编个代码?十分感谢!

使用道具

13
笨雅~ 发表于 2013-7-30 09:56:44 |只看作者 |坛友微信交流群
能分享一个例子吗?谢谢。本人水平有限看不懂啊
ntsean 发表于 2011-12-17 21:56
如果变量名多的话我以前做过用 sashelp.column 来得到这个data的所有变量名,然后按照自己需要的来order好, ...
非常好的建议,学习了!谢谢啦!

使用道具

14
yzsxdlcc 发表于 2013-7-30 10:45:30 |只看作者 |坛友微信交流群
  1. ods output variables=varlist;
  2. proc contents data=have;
  3. run;

  4. proc sort data=varlist;
  5. by descending num;
  6. run;

  7. proc sql;
  8. select variable into:varlist separated by ' '
  9. from varlist;
  10. quit;

  11. data want;
  12. retain &varlist;
  13. set have;
  14. run;
复制代码
从骨感走向丰满

文库

使用道具

15
yaoyouqing 发表于 2014-7-9 13:16:52 |只看作者 |坛友微信交流群
ntsean 发表于 2011-12-17 21:56
如果变量名多的话我以前做过用 sashelp.column 来得到这个data的所有变量名,然后按照自己需要的来order好, ...
具体怎么写代码啊?

使用道具

16
lpclimber 发表于 2015-12-15 13:14:10 |只看作者 |坛友微信交流群
谢谢各位的分析!!

使用道具

17
fidodidocw 发表于 2016-1-12 15:11:08 |只看作者 |坛友微信交流群
ntsean 发表于 2011-12-17 21:56
如果变量名多的话我以前做过用 sashelp.column 来得到这个data的所有变量名,然后按照自己需要的来order好, ...
不知道那个文档有介绍这个方法?

使用道具

18
ntsean 发表于 2016-1-13 09:12:04 |只看作者 |坛友微信交流群
fidodidocw 发表于 2016-1-12 15:11
不知道那个文档有介绍这个方法?
我写了个macro,
  1. %macro var_order(lib, data, vars, out);
  2. data _myvar;
  3.         k = 1;
  4.         do while(scan("&vars", k) ne "");
  5.                 name = upcase(scan("&vars", k));
  6.                 k = k + 1;
  7.                 output;
  8.         end;
  9.         drop k;
  10. run;

  11. proc sql noprint;
  12.         create table _othervars as
  13.         select upper(name) as name
  14.         from sashelp.vcolumn
  15.         where upcase(libname) = upcase("&lib")
  16.             and upcase(memname) = upcase("&data")
  17.             and upcase(name) not in (select name from _myvar);
  18.              
  19.         select name into :vars separated by ","
  20.         from (select * from _myvar union all select * from _othervars);
  21. quit;

  22. proc sql noprint;
  23.         create table &out as
  24.         select &vars from &lib..&data;
  25. quit;
  26. %mend;

  27. %var_order(lib = sashelp, data = cars, vars = origin type,
  28. out = cars1);
复制代码
vars 参数就是你要的顺序,vars里面的按照vars里面的顺序, 剩下的变量不再vars里面的都排在后面,

使用道具

19
fidodidocw 发表于 2016-1-13 09:49:24 |只看作者 |坛友微信交流群
ntsean 发表于 2016-1-13 09:12
我写了个macro,vars 参数就是你要的顺序,vars里面的按照vars里面的顺序, 剩下的变量不再vars里面的都排 ...
谢谢!我学习下。看来你从事SAS程序的工作?

使用道具

20
fidodidocw 发表于 2016-1-13 09:51:33 |只看作者 |坛友微信交流群
ntsean 发表于 2016-1-13 09:12
我写了个macro,vars 参数就是你要的顺序,vars里面的按照vars里面的顺序, 剩下的变量不再vars里面的都排 ...
谢谢!我学习下。看来你从事SAS程序的工作?

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 22:41