楼主: heguima
4541 23

用SAS在很多变量中找出日期变量 [推广有奖]

11
jl60156 发表于 2014-12-25 11:58:27
if you want to find dat in a certain dataset, try this

%macro getvarlst(inds=, string=);

proc sql;
create table varlst as
select distinct name as variable
from dictionary.columns
having memname=upcase("&inds") and kindex(name,"&string");
quit;
%mend;
%getvarlst(inds=a, string=dat);
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
heguima + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

12
heguima 发表于 2014-12-25 14:27:28
jl60156 发表于 2014-12-25 11:58
if you want to find dat in a certain dataset, try this

%macro getvarlst(inds=, string=);
thanks,it's very usefully

13
heguima 发表于 2014-12-25 14:29:13
sushe1527 发表于 2014-12-25 10:19
自己的 图片为啥删不了?妈蛋
什么图片来的?为啥要110个币,木有钱啊

14
heguima 发表于 2014-12-25 14:39:06
sniperhgy 发表于 2014-12-25 11:21
原因是挑出来的变量里面都含有dat这个成分啊,楼主如果要是有特定的要求,可以用正则表达式来写,一般的匹 ...
楼主,我的程序是楼上的仁兄写的,是这样的:
data a;
input  x  xdat  xdatx  y@@;
cards;
1 2 3 4
;run;

为了挑出数据集a里面的 xdat xdatx,用以下程序
proc sql noprint;
select distinct name
into :class separated by ' '
from dictionary.columns
where kindex(name,"dat");
quit;           
然后你 %put &class的话会出现很多含有“dat”的变量,但这些变量都不在数据集A里面的

关于正则能否详细讲解以下或者参考那本书?是运用于SAS里面的正则,因为本人只会SAS,而且工作也只能用SAS。谢谢了!

15
sniperhgy 发表于 2014-12-25 15:03:05
heguima 发表于 2014-12-25 14:39
楼主,我的程序是楼上的仁兄写的,是这样的:
data a;
input  x  xdat  xdatx  y@@;
嗯,这个是因为在挑选所有列的时候,没有限制library名称和dataset的名称。
  1. proc sql noprint;
  2.   select distinct name into :class separated by ' '
  3.   from dictionary.columns
  4.   where kindex(name,"dat")
  5.     and library = 'WORK'
  6.     and memname = 'A'
  7.   ;
  8. quit;
复制代码
正则表达式,推荐看看“小骆驼”,不要看“大骆驼”。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
heguima + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

16
sushe1527 发表于 2014-12-25 15:20:48
heguima 发表于 2014-12-25 14:29
什么图片来的?为啥要110个币,木有钱啊
你看不到吗?哈哈 那我放心了!

17
heguima 发表于 2014-12-25 18:12:50
sniperhgy 发表于 2014-12-25 15:03
嗯,这个是因为在挑选所有列的时候,没有限制library名称和dataset的名称。正则表达式,推荐看看“小骆驼 ...
谢谢你,SAS还是要多看几本书啊,我们教材根本没这些东西。
proc sql noprint;
  select distinct name into :class separated by ' '
  from dictionary.columns
  where kindex(name,"dat")
    and library = "Work"
    and memname = 'A'
  ;
quit;
这个出现运行的时候 library=“work”出错,不过有后面的memname其实也就行了,就是不知道为啥library这里会出错

18
sniperhgy 发表于 2014-12-26 10:06:12
heguima 发表于 2014-12-25 18:12
谢谢你,SAS还是要多看几本书啊,我们教材根本没这些东西。
proc sql noprint;
  select distinct nam ...
不好意思,我的失误,那个library改成libname就好了

19
sas9.4 发表于 2014-12-28 23:07:21
难道都不知道dictionary table 吗?
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
heguima + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

20
teqel 发表于 2014-12-29 00:10:13
heguima 发表于 2014-12-25 18:12
谢谢你,SAS还是要多看几本书啊,我们教材根本没这些东西。
proc sql noprint;
  select distinct nam ...
library = "Work"
WORK 要大写
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
heguima + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

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

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