楼主: zkfu41
5495 6

SAS如何提取出最后一个字符相同的所有变量 [推广有奖]

  • 3关注
  • 1粉丝

副教授

86%

还不是VIP/贵宾

-

威望
0
论坛币
401 个
通用积分
49.5133
学术水平
16 点
热心指数
20 点
信用等级
8 点
经验
52962 点
帖子
438
精华
0
在线时间
1614 小时
注册时间
2005-9-19
最后登录
2025-11-2

楼主
zkfu41 发表于 2015-9-26 10:18:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现在有一个数据库,变量名的命名规则是 ab1x ac2x ax3x……,ag1y ah2y ay3y……,ah1z am2z an3z……。在stata中,可以很方便的用*x,*y,*z的方式提取这些变量,并分别保存到不同的数据集中。但是在SAS中如何做到这一点呢?谢谢!

二维码

扫码加我 拉你入群

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

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

关键词:如何提取 最后一个 Stata tata 数据集 如何

沙发
18129380375 学生认证  发表于 2015-9-27 20:19:27
利用pro sql的模糊查找keyword:like

藤椅
sas那个石家庄人 发表于 2015-9-28 02:19:55
  1. data one;
  2. input az bz cz at bt ct xu hu;
  3. cards;
  4. 1 2 3 4 5 6 7 8
  5. ;;;
  6. run;

  7. data three;

  8. set one;
  9. id = open('work.one');
  10. length last $1;

  11. do i =1 to 8;

  12. get=varname(id,i);
  13. last=substr(get,length(get),1);

  14. if last="z" then var_with_z=get;
  15. else if last="t" then var_with_t=get;
  16. else var_unkown=get;
  17. output;
  18. call missing (var_with_z,var_with_t,var_unkown);
  19. end;

  20. drop i id get ;
  21. run;
复制代码


先用open function打开你的原数据集 并将这个数据集的id的值赋予一个变量id

varname function结合代表数据集的id和变量所在位置的数字 可以知道每个变量的名字

call missing是为了防止 几个变量retain他们的值 (不知道为什么不加这个function 最后结果就不对劲 你可以删掉观察结果的差异)

板凳
zkfu41 发表于 2015-9-28 20:36:37
非常感谢!

报纸
fangjunchao00 发表于 2018-9-21 18:53:29
虽然这个问题是15年被提出来的,但是,还是忍不住想回答一下,因为楼上的答案感觉有点繁琐。
事实上:

proc contents data=a out=out(keep=name) noprint;
run;

proc sql;
select name into: keep separated by ' '
from out
where name contains 'x';
quit;

data b (keep=&keep);
set a;
run;

地板
zkfu41 发表于 2018-9-21 21:16:28
fangjunchao00 发表于 2018-9-21 18:53
虽然这个问题是15年被提出来的,但是,还是忍不住想回答一下,因为楼上的答案感觉有点繁琐。
事实上:
对SQL的妙用,佩服!

7
xiaoxiaomj 发表于 2023-8-2 01:01:58 来自手机
fangjunchao00 发表于 2018-9-21 18:53
虽然这个问题是15年被提出来的,但是,还是忍不住想回答一下,因为楼上的答案感觉有点繁琐。
事实上:

为什么我的会报错说未解析

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 13:13