I have an input file, where my dates don't have leading zeros (like 25.3.2016) but I would like to transform them into format DDMMYYYYP10.
Is there any format, informat, function etc. that could do that for me?
I'm using SAS Enterprise Guide 4.3.
I have an input file, where my dates don't have leading zeros (like 25.3.2016) but I would like to transform them into format DDMMYYYYP10.
Is there any format, informat, function etc. that could do that for me?
I'm using SAS Enterprise Guide 4.3.
真的不需要任何“转换”。您只需要两件事:
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
声明而不是 a DATALINES
,但结果将是相同的。
请记住,输出格式只是格式。您可以随意更改它们而不影响基础数据。所以这里的关键是信息。
我的输入是数据集,所以这对我有用:
data dates;
set My_data;
format date1 DDMMYYP10.;
date1 = input (date, anydtdte10.);
run;
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;