sas日期格式

rus*_*ser 2 sas

我正在尝试编写一个简单读取SAS .sas7bdat数据文件并以文本格式输出的SAS脚本.我希望日期以YYYYMMDD格式输出.我不知道日期列的名称是什么.我的脚本目前是:

libname tmplib '~/testdatadir/';
OPTIONS MISSING='00'x;
data tmpdata;
set tmplib.testdatafile;
array flds{*} _NUMERIC_;
do i=1 to dim(flds);
  if missing(flds(i)) then flds(i)=.;
end;
array charflds{*} _CHARACTER_;
do i=1 to dim(charflds);
  if missing(charflds(i)) then charflds(i)=' ';
end;
drop i;
RUN;

PROC EXPORT
  DATA = tmpdata
  OUTFILE = 'testdataoutfile.txt'
  DBMS = TAB REPLACE;
  PUTNAME = YES;
RUN;
Run Code Online (Sandbox Code Playgroud)

我想要遍历所有日期字段(就像我使用NUMERIC字段和CHARACTER字段一样),或者为每个NUMERIC字段添加一个检查,测试它是否是日期(然后我可以更改格式),或添加一个选项PROC EXPORT表示输出日期格式.获取输出文件的日期格式为YYYYMMDD的任何其他方法也是可以接受的.

Gua*_*ang 5

您可以使用该varfmt函数查找数字变量的格式,这可以帮助您确定它是否为日期,即其格式是否为日期格式.从技术上讲,你可能有一个日期不是正确的日期格式,所以它只显示为16239或其他东西,但这些很难被发现,因为它也可能只是数字16,239.此方法将查找在数据浏览器中显示为日期的任何内容.

然后使用一些组合put,并input把它进入YYYYMMDD格式.

刚使用的一个问题put是我认为默认它会返回一个字符变量,所以你需要创建一个新的字符变量来保存日期,或者将YYYYMMDD转换回一个8位数字,所以这个数字20120501而不是字符串20120501.

对于例如2,你要注意,varfmt返回给定数据集的名称和数量可变的变量的格式.在示例中,他们设置了一个单独的vars表,其目的是遍历所有变量.

  • VARFMT函数与SAS组件语言(SCL)一起使用,使语法更复杂.VFORMAT函数在数据步骤中执行相同的任务,在这里可能会更容易.但是,仍然有一项任务是检查返回的格式名称是多种日期格式之一! (3认同)