楼主: henryyhl
4687 0

[问答] 关于SAS anydtdte informat 混合日期 输入格式 的疑问 [推广有奖]

  • 67关注
  • 5粉丝

副教授

55%

还不是VIP/贵宾

-

威望
0
论坛币
27 个
通用积分
18.0240
学术水平
18 点
热心指数
17 点
信用等级
11 点
经验
47974 点
帖子
504
精华
0
在线时间
1097 小时
注册时间
2011-11-4
最后登录
2024-5-7

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
最近看Cody的SAS Function by Example 2 nd edition。其中1.19是为了读入混合的日期格式。

* Program 1.19: Reading dates in a mixture of formats;
***Primary function: INDEXC;
***Other function: INPUT;

***Program to read mixed dates;
data mixed_dates;
   input @1 Dummy $15.;
   if indexc(dummy,'/-:') then Date = input(Dummy,mmddyy10.);
   else Date = input(Dummy,date9.);
   format Date worddate.;
datalines;
10/21/1946
06JUN2002
5-10-1950
7:9:57
;
title "Listing of Data Set MIXED_DATES";
proc print data=mixed_dates noobs;
run;
其中后面也说可以用 ANYDTDTE 格式读入,但是不是期望的结果。后来查到crackman 的帖子:http://crackman.net/?p=1221, 用 options datestyle= mdy 可以将第3个观测(5-10-1950)按照预期的读入。

程序如下:options datestyle= mdy;
data mixed_dates2;   
input @1 Date anydtdte10.;  
format Date worddate.;
datalines;
10/21/1946
06JUN2002
5-10-1950
7:9:57
;

title "Listing of Data Set MIXED_DATES";
proc print data=mixed_dates2 ;
run;

但是第4个观测(7:9:57)用 anydtdte读入后是1960年1月1日。如何将其读成日期呢?
谢谢!
Obs          Date
1     October 21, 1946                                   
2         June 6, 2002                                    
3      October 5, 1950                                    
4      January 1, 1960






二维码

扫码加我 拉你入群

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

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

关键词:anydtdte informat informa inform format function formats title

It's not going to be easy, but it is going to be worth it.
您需要登录后才可以回帖 登录 | 我要注册

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

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

GMT+8, 2024-5-30 22:32