楼主: lbnjin
3962 6

请问,如何使用proc sql select模糊选择变量名, 从而创建子数据集? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

51%

还不是VIP/贵宾

-

威望
0
论坛币
1073 个
通用积分
2.4000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1176 点
帖子
86
精华
0
在线时间
220 小时
注册时间
2005-7-31
最后登录
2024-4-18

10论坛币

各位高手,大家好啊!

我想请问一下,如何使用proc sql select模糊选择变量名, 从而创建子数据集?


具体程序如下:

data records;

   input winter number winner $ score window;

   datalines;

      1 1 bn 10 1

      3 78 abc 5 8

      6 4 yoo 6 9

   ;

run;



/*建立子数据集var_win*/

proc sql noprint;

   create tablevar_win as

      select win* /*需要实现的功能是从数据集里提取出包含共同prefix的变量(变量具体数目不确定, 变量之间不一定连续排列)*/

      from records;

quit;



/***实现后的子数据集***/

data var_win;

   input winter winner $ window;

   datalines;

      1 bn 1

      3 abc 8

      6 yoo 9

   ;

run;


这样的功能,如果用proc sql实现不了,那该用什么方法实现呢?

谢谢!



最佳答案

Tigflanker 查看完整内容

data _null_; set sashelp.Vcolumn(where=(libname='WORK' and memname='RECORDS')) end = last; if _n_ = 1 then call execute('data records_win;set records(keep='); if find(name,'win','i') then call execute(cats(name)); if last then call execute(');run;'); run;
关键词:proc sql Select Elect 如何使用 ele records window number create 如何
沙发
Tigflanker 发表于 2014-11-23 18:20:28 |只看作者 |坛友微信交流群
Tigflanker 发表于 2014-11-23 21:12
懒惰模式开启,押尾韵再说呵
data _null_;
  set sashelp.Vcolumn(where=(libname='WORK' and memname='RECORDS')) end = last;

  if _n_ = 1 then call execute('data records_win;set records(keep=');
  if find(name,'win','i') then call execute(cats(name));
  if last then call execute(');run;');
run;

使用道具

藤椅
Tigflanker 发表于 2014-11-23 21:12:03 |只看作者 |坛友微信交流群
  1. data records( keep = win:);
  2.    input winter number winner $ score window;
  3.    datalines;
  4.       1 1 bn 10 1
  5.       3 78 abc 5 8
  6.       6 4 yoo 6 9
  7.    ;
  8. run;
复制代码


懒惰模式开启,押尾韵再说呵
已有 1 人评分经验 学术水平 收起 理由
李会超 + 36 + 2 分析的有道理

总评分: 经验 + 36  学术水平 + 2   查看全部评分

使用道具

板凳
teqel 发表于 2014-11-24 01:01:51 |只看作者 |坛友微信交流群
Tigflanker 发表于 2014-11-23 21:23
data _null_;
  set sashelp.Vcolumn(where=(libname='WORK' and memname='RECORDS')) end = last;
这个算压尾韵的?:)
已有 1 人评分论坛币 收起 理由
Tigflanker + 5 呵呵,任意押韵

总评分: 论坛币 + 5   查看全部评分

使用道具

报纸
berry_li 发表于 2014-11-27 17:17:26 |只看作者 |坛友微信交流群
Mark!Mark!
本文来自: 人大经济论坛 SAS专版 版,详细出处参考: https://bbs.pinggu.org/forum.php?mod=viewthread&tid=3410609&page=1&from^^uid=5696428Mark!
本文来自: 人大经济论坛 SAS专版 版,详细出处参考: https://bbs.pinggu.org/forum.php?mod=viewthread&tid=3410609&page=1&from^^uid=5696428Mark!
本文来自: 人大经济论坛 SAS专版 版,详细出处参考: https://bbs.pinggu.org/forum.php?mod=viewthread&tid=3410609&page=1&from^^uid=5696428

使用道具

地板
gaotao0727 发表于 2014-11-28 09:42:03 |只看作者 |坛友微信交流群
Tigflanker 发表于 2014-11-23 18:20
data _null_;
  set sashelp.Vcolumn(where=(libname='WORK' and memname='RECORDS')) end = last;
学习了,谢谢大神~~

使用道具

7
sas9.4 发表于 2014-11-29 01:38:28 |只看作者 |坛友微信交流群
用data步的话不需要这么麻烦啊;
proc sql 的话变量的选择就比较不方便了。除非读到宏变量里面

使用道具

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

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

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

GMT+8, 2024-4-25 08:26