Sas 将所有日期变量格式化为相同格式
如何选择所有包含日期的变量并对其应用特定格式?我事先不知道他们的名字和电话号码 类似于此伪代码,尽管特殊变量引用日期不以数字、字符或全部形式存在Sas 将所有日期变量格式化为相同格式,sas,Sas,如何选择所有包含日期的变量并对其应用特定格式?我事先不知道他们的名字和电话号码 类似于此伪代码,尽管特殊变量引用日期不以数字、字符或全部形式存在 如果这是不可能的,那么让我们假设日期变量都已经在ddmmyy10中格式化,例如,我想选择所有具有这种格式的变量并将它们转换为date9。我不确定您所问的更一般的问题是否有解决方案(至少我不知道如何获取任何可能隐藏为数字变量的日期变量,除非遵循一些命名约定)。但是,如果您只想重新格式化具有几种已知格式之一的日期变量(未指定数量),则更简单: DATA t
如果这是不可能的,那么让我们假设日期变量都已经在ddmmyy10中格式化,例如,我想选择所有具有这种格式的变量并将它们转换为date9。我不确定您所问的更一般的问题是否有解决方案(至少我不知道如何获取任何可能隐藏为数字变量的日期变量,除非遵循一些命名约定)。但是,如果您只想重新格式化具有几种已知格式之一的日期变量(未指定数量),则更简单:
DATA test;
format anotherdate again_dates date1 ddmmyy10.;
date1 = '31DEC2015';
name = "names";
first_n = "charge";
anotherdate = 1000;
result = 34.2;
again_dates = 1001;
Run;
proc contents data = test out = testcntnts;
run;
proc sql;
select NAME into: datevars separated by ' ' from testcntnts where FORMAT = "DDMMYY";
quit;
data test2;
format &datevars date9.;
set test;
run;
您可以回答第二个问题,但不能回答第一个问题。SAS将日期存储为数字,因此无法区分任何整数和日期 您可以从sashelp.vcolumn或使用proc内容过滤ddmmyy格式的日期,然后我将使用proc数据集应用这些更改。使用proc数据集的优点是您不需要重新处理数据集
我建议的解决方案非常接近Christopher Anderson,但数据源和实现不同,但代码基本相同。您想如何区分数字变量和日期?例如,在您的示例中,
anotherdate
或再次\u dates
DATA test;
format anotherdate again_dates date1 ddmmyy10.;
date1 = '31DEC2015';
name = "names";
first_n = "charge";
anotherdate = 1000;
result = 34.2;
again_dates = 1001;
Run;
proc contents data = test out = testcntnts;
run;
proc sql;
select NAME into: datevars separated by ' ' from testcntnts where FORMAT = "DDMMYY";
quit;
data test2;
format &datevars date9.;
set test;
run;