我正在处理一个数据集(DATA),它有3个变量(Var1,Var2,Var3),我需要改变它的格式。 变量采用特殊日期格式(例如OLDFMT1),我需要使用DATEPART函数将它们更改为常规SAS日期格式。
问题是我需要使用do循环和调用DATEPART函数的数组在单个数据步骤中完成此操作。必须在数组中使用DIM函数,我必须在结束数据集之前删除索引变量(i)。
然后,我必须申请DATE9。对这些变化的变量起作用。
我是新手做循环,这个让我头疼。任何帮助将不胜感激。
答案 0 :(得分:2)
通过说您想使用DATEPART
函数,您暗示您的三个现有变量当前存储为SAS“日期时间”值。所以试试这个:
data have;
var1 = datetime();
var2 = datetime();
var3 = datetime();
format var1-var3 datetime19.;
run;
data want;
set have;
array allvars(*) var1-var3;
do i=1 to dim(allvars);
allvars(i) = datepart(allvars(i));
end;
format var1-var2 date9.;
drop i;
run;
请记住,SAS只有两种数据类型(数字和字符)。当使用适当的格式时,日期,时间和日期时间只是“已知”。在SAS:
注意date9.
不是函数;这是一种格式。有许多不同的格式可用于“暴露”变量的基础值,但值本身不会改变。这是SAS编程真正有用的功能之一。
答案 1 :(得分:0)
如果您只希望格式化为DATE9。的数据,而不是必须存储为日期,则可以将前缀DT应用于任何日期格式并将其应用于日期时间值。所以DTDATE9。 format将以date9格式显示日期时间值。