楼主: Laughing06
4397 14

关于日期型变量引用的问题! [推广有奖]

11
mingfeng07 学生认证  发表于 2015-1-9 11:18:19
Laughing06 发表于 2015-1-9 09:18
办法是可以,先谢啦。但是如何引用变量date, 让他不至于产生20069这样的数字,而是用12DEC2014这样的具体 ...
还是一样的处理手段,需要对a1进行预处理:
  1. data a1(drop=date_new);
  2. set  a1(rename=(date=date_new));
  3. date=put(date_new,date9.);
  4. run;
复制代码

12
tangliang0905 发表于 2015-1-9 11:29:12
data a;
input date $10. ;
cards;
12Dec2014
11Nov2013
20141212
20131111
run;


data b;
set a;
comments="The person's birthdate was" || put(input(date,anydtdte15.),mmddyy10.);
run;
;

因为a里面日期这种写法肯定就是character了,所以,先用input把他们用anydtdte的informat变成数字型,然后再用put加上自选的format变成想要的character,的确是有点绕,最近在重读little sas book,觉得还是很有帮助的。

13
sushe1527 发表于 2015-1-9 12:15:17
a1  ,a2里面的日期是什么样子的很关键
要是20141212是常数还好,要是直接yymmdd这样的 和date9应该分不开
  1. data a1;
  2. input date date9.;
  3. format date date9.;
  4. cards;
  5. 12Dec2014
  6. 11Nov2013
  7. ;run;
  8. data a2;
  9. input date ;
  10. cards;
  11. 20141212
  12. 20131111
  13. ;run;

  14. %macro test;
  15. %do i=1 %to 2;
  16. data new&i;
  17.    set a&i; length comments $ 50.;
  18. flag=substr(put(date,yymmdd10.),5,1);
  19.   if flag="-" then comments="The person's birthdate was" || ""||put(date,date9.);
  20.   if flag="*" then comments="The person's birthdate was" || date;
  21. run;
  22. proc print data=new&i;
  23. %end;
  24. %mend;
  25. %test;
复制代码

14
Laughing06 发表于 2015-1-9 12:47:11
sushe1527 发表于 2015-1-9 12:15
a1  ,a2里面的日期是什么样子的很关键
要是20141212是常数还好,要是直接yymmdd这样的 和date9应该分不开
...
哇,非常感谢!这个方法可以实现。先判断date的类型。非常感谢!

15
Laughing06 发表于 2015-1-9 12:48:21
统一谢谢各位!祝大家继续坚持SAS

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 17:34