Date SAS更改日期格式

Date SAS更改日期格式,date,sas,format,Date,Sas,Format,我想定义一个采用以下格式的日期格式:12JAN2010 我尝试使用以下代码: /* partie B question 2*/ data projet.Ophtalmo_new; set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia)) (RENAME= (date_examen=date_exa)); date_diagnostic = input (date_dia, DDMMYY10.);

我想定义一个采用以下格式的日期格式:12JAN2010

我尝试使用以下代码:

    /* partie B question 2*/
    data projet.Ophtalmo_new;
    set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia)) (RENAME=
(date_examen=date_exa));
    date_diagnostic = input (date_dia, DDMMYY10.);
    date_examen = input (date_exa, DDMMYY10.);
    format date_diagnostic date_examen date9.;
    run;
但它向我发送了以下语法错误:

ERROR 22-322: Syntax error, expecting one of the following: un nom, une chaîne 
entre guillemets, ;,
          CUROBS, END, INDSNAME, KEY, KEYRESET, KEYS, NOBS, OPEN, POINT, 
_DATA_, _LAST_, _NULL_.

我仍然是sas初学者,无法使其正常工作,希望您能提供帮助,谢谢。

我相信问题在于重命名语句。你只能叫它一次

更改此项:

set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia)) (RENAME=
(date_examen=date_exa));
为此:

set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia date_examen=date_exa));

数据集选项的语法是单括号表达式。重命名选项适用于:

data-set-name ( ... options ... rename=(...) );
重命名选项的语法如下所示:

rename=(old-name-1=new-name-1 old-name-2=new-name-2 ...)
所以正确的set语句应该是

set projet.Ophtalmo_new (RENAME=(date_diagnostic=date_dia date_examen=date_exa));
因为你说你是初学者,所以我增加了这一部分

显示的代码表示最初命名为date_diagnostic和date_examen的变量的输入。如果这些变量确实是要开始的字符变量,则需要输入将字符转换为SAS日期,SAS日期只是一个具有特殊含义的数字。但是,如果变量已经是SAS日期,其格式与所需格式不同,则只需更新变量的格式或使用format语句更改PROC步骤中使用的格式

data have;
  x = '01-jan-2017'd;
  format x ddmmyy10.;
run;

* demonstrate that the permanent format of x is ddmmyy10.;
data _null_;
  put x=;
run;

* demonstrate temporary formatting of variable during step;
data _null_;
  set have;
  format x date9.;  * modify the format temporarily during execution of data _null_;
  put x=;
run;

* permanently change format of variable;
* only the dataset metadata (or header data) changes, the entire data set is NOT rewritten;
proc datasets nolist lib=work;
  modify have;
  format x date9.;
run;

* demonstrate that the permanent format of x has changed to date9.;
data _null_;
  set have;
  put x=;
run;

不能重命名日期,然后在输入语句中使用这些变量。它们已被重命名,不再存在,因此尝试在输入函数中访问日期将导致所有缺失值

您也不应该在data和set语句中使用具有相同数据集名称的表示法。这意味着一旦运行此步骤,原始数据将不再存在。因此,在修复代码之前,您需要先备份几个步骤并重新创建原始数据。一般来说,这会导致更难诊断和修复的错误,因为即使修复代码,原始数据也是错误的,所以您仍然认为自己有错误

因此,改变: 1.更改data语句中输出数据集的名称。 2.删除重命名数据集选项。 3.添加DROP语句以删除不再需要的变量

/* partie B question 2*/
data projet.Ophtalmo2; 
set projet.Ophtalmo_new; 

date_diagnostic = input (date_dia, DDMMYY10.);
date_examen = input (date_exa, DDMMYY10.);
format date_diagnostic date_examen date9.;

 drop date_dia date_exa;
run;