我有一个服务,它会获取.csv并将其处理为.sas7bdat。
我通过填写变量名,长度和指定输出位置来修改现有的.sas模板。
我有一个场景,其中.csv的日期格式为'DD MMM YYYY'。我需要将此格式保存到输出文件中。预定义格式允许'DDMMMYYY'和'DD-MMM-YYYY'。我在模板中尝试了这些格式类型。
以下是标准字符类型的模板:
TIMEOUT
如何修改此代码以输出日期,如下所示'01 JAN 2000'
修改
如何将此值作为字符值输出到.sas7bdat?
答案 0 :(得分:0)
没有默认格式显示为DD MMM YYYY,因此需要自行滚动。我相信以下内容可以帮助您实现目标:
proc format;
picture ddmmmyy
other= '%0d %b %Y' (datatype=date);
run;
data have;
datevar='01 JAN 2000';
run;
data want;
set have;
actualdatevar=input(datevar,anydtdte11.);
format actualdatevar ddmmmyy11.;
run;
给出:
请注意,您无法将字符变量转换为数字,因此您可能希望创建一个新变量然后删除旧变量(也可以重命名新变量,以便最终得到相同的命名变量)。
EDIT1:申请特定答案(现在情况更清楚)
以下内容应达到所需:
LIBNAME TempSrc "C:\Temp";
proc format;
picture ddmmmyy
other= '%0d %b %Y' (datatype=date);
run;
proc import datafile="\\***\FileLocation\file.csv"
out=mydata dbms=dlm replace;
DELIMITER= ",";
getnames=yes;
options ExtendObsCounter=yes;
RUN;
/* if all you need to do is apply the format, you may be better using proc datasets */
DATA TempSrc.fileName;
set work.mydata;
format DATEVAR ddmmmyy11. ;
RUN;
EDIT2:转换为字符,以便在通用查看器中正确显示(没有自定义格式)
LIBNAME TempSrc "C:\Temp";
proc format;
picture ddmmmyy
other= '%0d %b %Y' (datatype=date);
run;
proc import datafile="\\***\FileLocation\file.csv"
out=mydata dbms=dlm replace;
DELIMITER= ",";
getnames=yes;
options ExtendObsCounter=yes;
RUN;
/* convert numeric to character via rename */
DATA TempSrc.fileName;
set work.mydata (rename=(DATEVAR=DATEVAR2));
DATEVAR=put(DATEVAR2,ddmmmyy11.);
drop DATEVAR2;
RUN;