date - 将字符日期变量转换为 SAS 日期

标签 date sas character numeric

我在 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/

相关文章:

csv - SAS Proc 导入和格式错误

php - 如何在PHP中拆分汉字?

android - SQLite 中的日期时间排序

sas - ChatGPT API 在 SAS 中集成时出错。无效的上下文类型 header

SAS 函数适用于所有观察(金融 xirr)

python - 如何在 Python 中用 ' ' 替换我的自定义字符?

Java Unicode 字符宽度

php - substr() 没有按预期工作

Java - 公历

Java SimpleDateFormat 将日期偏移一年