我在 Excel 文件中有以下名为 Date 的变量,我正在将其读入 SAS:
Date
May2005
June2005
July2005
..
July2015
格式和信息都是字符($8)
我想将它们转换为 SAS 日期变量。 我怎样才能完成这个任务?
我考虑过使用 substr 首先创建一个月份和年份变量, 然后使用 proc 格式将所有月份转换为数字(例如 'jan' = 1)。 使用 mdy 日期函数创建新日期。但我想知道是否有更短的方法来完成这项任务?
最佳答案
您可以使用 ANYDTDTE。通知您是否在月+年字符串前面添加一天。
data want ;
set have ;
actual_date = input('01'||date,anydtdte.);
format actual_date date9.;
run;
请注意,附加到字符变量的 FORMAT 或 INFORMAT 是没有意义的,但是长度仅为 8 的变量将不允许有空间存储更长的月份名称。也许长度只设置为 8,因为您的特定示例数据集不包含任何更长的月份名称。
如果您运行的是旧版本的 SAS,ANYDTDTE.信息不存在或无法在完全拼写的月份下工作,那么您将需要更加努力地工作。您可以将字符串转换为 DATE9 格式。
actual_date = input
('01'||substr(date,1,3)||substr(date,length(date)-3)
,DATE9.);
关于date - 将字符日期变量转换为 SAS 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32622750/