我在Excel中使用以下格式的日期02/15/2011。当我导入到excel时,日期是数字,例如40561。当我使用下面的代码在SAS中转换日期时,我得到的日期例如04/01/1946。到目前为止,我的代码是:
data Reformat11;
set Old;
Amount1 = input(Amount, comma10.);
DateReceived2 = Input(PUT(DateReceived, 5.), MMDDYY10.);
Format DateReceived2 MMDDYY10.;
format DateApproved MMDDYY10.;
run;
还有其他建议吗?
答案 0 :(得分:0)
SAS知道如何从Excel导入日期。它不能为单个变量处理不同的数据类型。 SAS数据集更像是数据库而不是电子表格。如果可以,请在源Excel文件中进行更正,以使该列中的每个单元格都包含有效日期,并且您的问题应消失。
通常,当Excel中的列具有混合格式时,您通常只会看到原始的Excel天数值。因此,如果某些单元格是字符,则整列将是字符,SAS将以表示该数字的字符串获得天数。因此,在您的示例中,您将在SAS中看到值'40561'
。因此,您首先需要将其转换为数字,然后根据SAS和Excel使用的不同基准日期进行调整。
DateReceived2 = Input(DateReceived, 5.) + '30DEC1899'd ;
然后可以附加任何有效的日期格式。我会避免使用MMDDYY或DDMMYY,因为您会混淆一半的受众(您是说4月1日还是1月4日?)。尝试YYMMDD或DATE。
format DateReceived2 yymmdd10.;