请选择 进入手机版 | 继续访问电脑版
楼主: tj0412ymy
10049 7

[学习分享] 改变SAS输出数据集中变量次序的方法汇总 [推广有奖]

  • 2关注
  • 48粉丝

副教授

65%

还不是VIP/贵宾

-

威望
0
论坛币
11510 个
通用积分
12.6975
学术水平
72 点
热心指数
91 点
信用等级
64 点
经验
29292 点
帖子
545
精华
0
在线时间
1203 小时
注册时间
2009-3-10
最后登录
2024-2-15

tj0412ymy 发表于 2015-10-14 15:37:58 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
【问题背景】
在实际工作中,经常面临自定义数据集变量次序的问题。当处理的变量较多时,就算手工在EXCEL里通过VLOOKUP排序处理也是比较耗时的。
【解决方法】
除了引用Crackman给出的两种方法(http://crackman.net/?p=1044)外,另附两种我平时常用的解决办法,总有四种方法可参考。
方法1:
在SET语句之前,用LENGTH语句可以重新声明变量在PDV中的顺序

data crackman;
length Name $ 6 Age 8 Sex $ 2 Weight Height 8;
set sashelp.class;
run;

方法2:
利用retain语句重置变量顺序

data crackman1;
retain Name Age Sex Weight Height;
set sashelp.class;
run;

方法3:
利用SQL语句重置变量顺序

proc sql;
create table crackman1 as
select Name,Age,Sex,Weight,Height
from sashelp.class
;
quit;

方法4:
将排序完毕的变量存储在一数据集中,通过调用宏变量在retain或SQL语句中重置变量顺序

data varorder;
input varname $10.;
cards;
Name
Age
Sex
Weight
Height
;
run;

proc sql noprint;
select distinct varname into :nmlist1 separated by " "  from varorder
;
select distinct varname into :nmlist2 separated by ","  from varorder
;
quit;

data crackman1;
retain &nmlist1.;
set sashelp.class;
run;

proc sql;
create table crackman2 as
select &nmlist2
from sashelp.class
;
quit;

如各位朋友有其他方法,可在回帖中附上,以便大家共享。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据集 crackman proc sql separate Distinct EXCEL 手工

对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!
mandyfervor 发表于 2015-10-14 17:11:11 |显示全部楼层 |坛友微信交流群
多谢楼主,刚才在google里搜了一下,说是还可以用attrib, 哪种方法最好呢?

使用道具

Crsky7 发表于 2015-10-14 17:22:47 |显示全部楼层 |坛友微信交流群
不知道可以用proc datasets来处理么?这样不必读入所有观测。

使用道具

tj0412ymy 发表于 2015-10-15 08:24:20 |显示全部楼层 |坛友微信交流群
mandyfervor 发表于 2015-10-14 17:11
多谢楼主,刚才在google里搜了一下,说是还可以用attrib, 哪种方法最好呢?
类似Length语句,参考意义不大

使用道具

gaotao0727 发表于 2015-10-15 09:17:10 |显示全部楼层 |坛友微信交流群
第四种方法最后生成数据集变量的次序是跟你生成宏变量所存储的变量次序相关的,跟你varorder中所定义的变量次序没有关系了~~所以第四种方法应该是无效的啊

使用道具

jihoufeng 发表于 2017-8-11 01:01:11 |显示全部楼层 |坛友微信交流群
很赞!!谢谢楼主!!

使用道具

superguy333 发表于 2017-8-17 00:27:54 |显示全部楼层 |坛友微信交流群
学习了

使用道具

zsl2022 发表于 2023-12-14 09:14:39 |显示全部楼层 |坛友微信交流群
gaotao0727 发表于 2015-10-15 09:17
第四种方法最后生成数据集变量的次序是跟你生成宏变量所存储的变量次序相关的,跟你varorder中所定义的变量 ...
第四种方法只要把distinct去掉就行了

使用道具

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

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

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

GMT+8, 2024-4-18 11:05