gpt4 book ai didi

SAS日期格式

转载 作者:行者123 更新时间:2023-12-02 06:39:42 32 4
gpt4 key购买 nike

我正在尝试编写一个 SAS 脚本,该脚本将简单地读入 SAS .sas7bdat 数据文件并以文本格式输出。我希望日期以 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;

我想遍历所有日期字段(就像我对 NUMERIC 字段和 CHARACTER 字段所做的那样),或者为每个 NUMERIC< 添加一个检查/em> 字段测试它是否是日期(然后我可以更改格式),或向 PROC EXPORT 添加一个选项以指示输出日期格式。使输出文件的日期格式为 YYYYMMDD 的任何其他方法也是可以接受的。

最佳答案

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

然后使用 putinput 的某种组合将其转换为 YYYYMMDD 格式。

仅使用 put 的一个问题是我认为默认情况下它将返回一个字符变量,因此您需要创建一个新的字符变量来保存日期,或者转换 YYYYMMDD返回一个 8 位数字,因此数字 20120501 而不是字符串 20120501

对于 example 2 ,您应该注意到 varfmt 返回给定数据集名称和变量编号的变量格式。在示例中,他们设置了一个单独的 vars 表,其目的是遍历所有变量。

关于SAS日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401471/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com