作者:416703721 | 来源:互联网 | 2023-09-04 20:42
篇首语:本文由编程笔记#小编为大家整理,主要介绍了SAS更改日期格式相关的知识,希望对你有一定的参考价值。
我想定义一个采用以下格式的日期格式: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_.
我仍然是一个初学者,我无法让它正常工作,希望你能帮助,谢谢。
答案
数据集选项的语法是单个括号表达式。 rename
选项适用于:
data-set-name ( ... options ... rename=(...) );
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日期,则只需更新变量的格式(或使用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;
另一答案
我认为问题是RENAME
声明。你只能打电话一次。
改变这个:
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));
另一答案
您无法重命名日期,然后在INPUT语句中使用这些变量。它们已被重命名并且不再存在,因此尝试在INPUT函数中访问date_dia将最终导致所有缺失值。
您也不应该在DATA和SET语句中使用具有相同数据集名称的表示法。这意味着一旦运行此步骤,原始数据就不再存在。因此,您需要先备份几个步骤并重新创建原始数据,然后才能修复代码。通常,这会导致更难以诊断和修复的错误,因为即使您修复了代码,原始数据也是错误的,因此您仍然认为自己有错误。
因此,更改:1。更改数据语句中输出数据集的名称。 2.删除RENAME数据集选项。 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;