我有一个输入文件,其中我的日期没有前导零(比如25.3.2016),但是我想把它们转换成DDMMYYYYP10格式。
有没有任何格式,格式,功能等可以为我做到这一点?
我正在使用SAS企业指南4.3。
发布于 2016-04-01 08:23:21
我的输入是dataset,所以这对我有用:
data dates;
set My_data;
format date1 DDMMYYP10.;
date1 = input (date, anydtdte10.);
run;发布于 2016-03-26 20:26:40
不需要任何“转换”,真的。你只需要两件事:
ANYDTDTE10.应该这样做),以便在读取数据时充分识别日期DDMMYYP10.),前提是它们与上面的informat一起正确导入。说明:
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。
发布于 2016-03-25 11:31:29
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 informat读取25.3.2016这样的日期。下面使用ddmmyy10格式读取文本文件中的值,然后使用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;https://stackoverflow.com/questions/36217713
复制相似问题