【发布时间】:2016-07-20 00:14:32
【问题描述】:
我正在尝试找到一种方法来识别代表日期、时间或日期时间的数字变量子集,该数据集包含许多数字或字符类型的变量。目标是拥有一个可以针对任何给定数据集运行的宏或模板。我相信这些变量的 SAS 格式应该正确地表示变量是什么,但我想看看我是否可以避免创建一些代码来解析任何适用的格式名称的 SAS 格式的文本。
我最初认为应该可以执行以下操作来获取数据集的 SAS 格式,然后根据作为日期/时间/日期时间返回的列执行各种操作。
PROC SQL;
CREATE TABLE lib_X.Dataset_A AS
SELECT tbl_CL.LIBNAME
,tbl_CL.MEMNAME AS TABLE_NAME
,tbl_CL.NAME AS COLUMN_NAME
,tbl_CL.FORMAT AS SAS_Format
,tbl_CL.TYPE AS SAS_Type
,tbl_CL.varnum
,tbl_CL.LENGTH
FROM DICTIONARY.COLUMNS AS tbl_CL
WHERE tbl_CL.MEMNAME = %UPCASE("&SAS_DatasetNm")
AND tbl_CL.LIBNAME = %UPCASE("&SAS_LibNm");
QUIT;
接着是:
DATA lib_X.Dataset_A;
SET lib_X.Dataset_A;
IF FCN_FORMAT_TYPE(SAS_Format) = "DATETIME"
THEN ...;
RUN;
FCN_FORMAT_TYPE 函数是检查 SAS 格式并返回变量是 4 categories of SAS Format(字符、数字、日期/时间或 ISO 8601)中的哪一个的函数,但似乎没有我可以找到执行此操作的现有功能。也许还有另一种可行的方法?
目前在 Linux 服务器上的 SAS 9.4 M2 上运行。该代码将主要通过批处理文件使用,但也可能通过企业指南(EG 7.1 或 6.1)
【问题讨论】:
标签: sas