我有一个输入文件,我的日期没有前导零(如25.3.2016),但我想将它们转换为DDMMYYYYP10格式。
是否有任何格式,信息,功能等可以帮助我?
我正在使用SAS Enterprise Guide 4.3。
答案 0 :(得分:2)
确实没有任何“转型”。你需要的只有两件事:
ANYDTDTE10.
应该这样做),以便SAS在阅读数据时充分识别日期DDMMYYP10.
)显示日期,前提是它们已正确导入上述信息。插图:
data dates;
format mydate DDMMYYP10.;
input mydate ANYDTDTE10.;
datalines;
25.3.2016
run;
proc print;run;
结果:
Obs mydate
1 25.03.2016
当然,如果您正在阅读外部数据(我认为是您的情况),您将需要INFILE
语句而不是DATALINES
,但结果将是相同的。
请记住,输出格式只是格式。您可以随意更改它们,而不会影响基础数据。所以关键在于 informat 。
答案 1 :(得分:0)
SAS旨在将日期存储为“SAS日期”,这是一个数字变量,即自1960年1月1日以来的天数。假设您有一个SAS日期(而不是一个看起来像一个字符变量的字符变量)日期),应该直接更改用于此变量的格式。请注意,这实际上并不会对值进行转换,只会更改用于在打印时显示值的格式等。
36 data want;
37 mydate="1Mar2016"d;
38 put mydate=;
39 format mydate ddmmyyp10.;
40 run;
mydate=01.03.2016
编辑:我重读了你的问题并意识到你可能没有SAS数据集作为输入,而是有一个文本文件?如果是这样,您可以使用ddmmyy10信息阅读25.3.2016之类的日期。下面使用ddmmyy10 informat读取文本文件中的值,然后使用ddmmyyp10格式将其格式化为句点分隔符:
115 data want;
116 input mydate ddmmyy10.;
117 put mydate=;
118 format mydate ddmmyyp10.;
119 cards;
mydate=01.03.1960
NOTE: The data set WORK.WANT has 1 observations and 1 variables.
121 ;
122 run;
答案 2 :(得分:0)
我的输入是数据集,所以这对我有用:
data dates;
set My_data;
format date1 DDMMYYP10.;
date1 = input (date, anydtdte10.);
run;