SAS的新手和我尝试将年度日期范围转换为" 2014"," 2015" &安培; " 2016&#34。例如,我在2014年,2015年和2016年有一个包含大量日期的订单列,并希望将每年的值转换为年份的名称。我试图使用的代码如下。
Data SortingDates;
set work.ClaraData;
if OrderDate <='31Dec2014'd then OrderDate = "2014";
if '01Jan2015'd <= OrderDate <= '31Dec2015'd then OrderDate= "2015";
if '01Jan2016'd <= OrderDate <= '31Dec2016'd then OrderDate = "2016";
run;
然而,此消息出现:字符值已在......
给出的位置转换为数值另外,在打印数据时,日期全部显示为 09/07/1965
OrderDate列格式正确为&#34; OrderDate Num 8 DDMMYY10。 DDMMYY10&#34;
谢谢!
答案 0 :(得分:0)
尝试年份功能(本PDF第15页):https://www.sas.com/storefront/aux/en/spfunctionxexample/62857_excerpt.pdf
Data SortingDates;
set work.ClaraData;
OrderDate = YEAR(OrderDate);
run;
或者将其保留为日期,请尝试年份格式(如同一个pdf的第8页)
Data SortingDates;
set work.ClaraData;
format OrderDate YEARw.;
run;
答案 1 :(得分:0)
您收到警告是因为您尝试分配字符串&#34; 2014&#34;到数字变量OrderDate。 SAS可能成功转换了#34; 2014&#34;为你准备了2,014,但由于你没有改变格式,它应该显示为&#39; 07/07/1965&#39;因为这是自01JAN1960以来的2,014天。
如果您使用YEAR()函数获取日期值的年份,这可能是最简单的。
OrderYear = year(OrderDate);
但您也可以尝试在现有的OrderDate变量上使用YEAR.
格式。
proc freq data=ClaraData ;
tables OrderDate ;
format OrderDate year. ;
run;