楼主: liyichen17
3633 18

[问答] SAS中日期数据的清洗 [推广有奖]

11
pobel 在职认证  发表于 2014-10-17 16:28:31
liyichen17 发表于 2014-10-17 16:24
20121305 这个是写错了,应该20121205,像这种各种日期格式都在一列,是否都可以按照YYMMDD8.的格式读入? ...
YYMMDD8,只能读入年-月-日,年是4位,而且中间没有符号的。
像2014-10-17这样的是不能的。

12
liyichen17 在职认证  发表于 2014-10-17 16:51:17
pobel 发表于 2014-10-17 16:28
YYMMDD8,只能读入年-月-日,年是4位,而且中间没有符号的。
像2014-10-17这样的是不能的。
像我这种什么格式的都在一列,应该怎么处理呢?

13
pobel 在职认证  发表于 2014-10-17 16:59:44
liyichen17 发表于 2014-10-17 16:51
像我这种什么格式的都在一列,应该怎么处理呢?
可以根据不同的格式用不同的informat,如yymmdd10.
好像还有一个anydate的,可以同时适用多种格式。

14
liyichen17 在职认证  发表于 2014-10-18 10:30:22
jingju11 发表于 2014-10-18 04:00
AS suggested, all the (in)formats you listed can be read in ANYDTDTEw. informats in SAS. 考虑到SAS
...
非常感谢,我发现我的数据里面还有一种日期格式:
Sun Sep 15 00:00:00 C
Tue Apr 23 00:00:00 C
Thu Aug 08 00:00:00 C
Sat Nov 23 00:00:00 C
Wed Jan 09 00:00:00 C
Wed Mar 27 00:00:00 C

15
小鳄鱼a 发表于 2014-10-18 11:24:37
你做的是高频吗

16
teqel 发表于 2014-10-19 01:10:13 来自手机
个人感觉,你可以用input函数结合不同的informat转化日期,转化成功的在一个data set里面存起来。最后把所有的文件连起来

17
lwien007 发表于 2014-10-23 13:16:33
  1. data tm;
  2.         length d $ 100. ;
  3.         infile cards dlm=',';
  4.         input d;
  5.         cards;
  6. 2013-01-01 00:00:00
  7. 2013/1/1
  8. 2013-1-1
  9. 2012.01.01
  10. 2012.1.1
  11. 2013/1/1
  12. 2013/1/1
  13. 20120101
  14. 18991231(乱码)
  15. Sun Sep 15 00:00:00 C
  16. Tue Apr 23 00:00:00 C
  17. Thu Aug 08 00:00:00 C
  18. Sat Nov 23 00:00:00 C
  19. Wed Jan 09 00:00:00 C
  20. Wed Mar 27 00:00:00 C
  21. ;
  22. run;

  23. data tm2;
  24.         set tm;
  25.         reg1 = prxparse("/[a-zA-Z]{3} [a-zA-Z]{3} \d\d/");
  26.         date = input(d,yymmdd10.);
  27.         if missing(date) then do;
  28.                 if prxmatch(reg1,d) then date2 = compress(substr(d,5,6));;
  29.         end;
  30.         format date yymmdd10.;
  31. run;
复制代码

date = input(d,yymmdd10.); 可以解决前边的所有日期形式,但是
Sun Sep 15 00:00:00 C
Tue Apr 23 00:00:00 C
Thu Aug 08 00:00:00 C
Sat Nov 23 00:00:00 C
这种形式的日期,没有年份,不能合并,上面程序可以把这种形式的日期挑选出来,你根据实际情况自己修改代码,把年份加上就行。你提问题不给足够的信息,别人都不知道怎么做。只写一个乱码,谁能处理。

18
wh7064rg 发表于 2014-11-5 09:27:58
学习中

19
sas9.4 发表于 2014-11-5 12:17:25
put(datevar, ??yymmdd10.)

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

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