Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 将所有日期变量格式化为相同格式_Sas - Fatal编程技术网

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;