【问题标题】:SAS not recognizing date formatSAS 无法识别日期格式
【发布时间】:2015-08-13 14:59:42
【问题描述】:

我有以下字符日期格式:

"3/1990"
"4/1990"
"5/1990"
...

我尝试了以下代码:

data work.temps;
  set indata;
  newdate = input(strip(Date), MMYYSw.);
  rename newdate = date;
run;

我不断收到以下错误消息:Informat MMYYSW was not found or could not be loaded.

【问题讨论】:

  • 您可以尝试用MMYYS. 代替MMYYSw.。看看这有什么不同
  • 不,我得到同样的错误

标签: string sas character numeric informat


【解决方案1】:

您可能必须使用不同的信息来读取字符日期,以便 SAS 可以将它们解释为数字(因为 SAS 中的日期实际上是数值),然后将它们格式化为 MMYYS.

这已经过测试并且对我有用:

DATA temps;
FORMAT newdate MMYYS.;
SET indata;
newdate = INPUT(COMPRESS('01/'||date),DDMMYY10.);
RUN;

【讨论】:

  • 谢谢。我会说你的回答确实很好地区分了 FORMAT 和 INFORMAT。
【解决方案2】:

用 anydtdte 试试这个:

data have;
    input date $10.;
    _date=input(compress(date,'""'),anydtdte.);
    format _date MMYYs7.;
    cards;
    "3/1990"
    "4/1990"
    "5/1990"
    ;
    run;

【讨论】:

    【解决方案3】:

    您指的是 FORMAT,而不是 INformat。 您将使用带有 PUT 功能的格式,对于 INPUT,您需要信息。

    反正我没有找到合适的信息直接使用,所以你需要做更多的事情:

    data work.temps;
    infile cards truncover;
    input Date $10.;
    newdate=MDY( scan(Date,1, '/'), 1, scan(Date,2, '/') );
    cards;
    3/1990
    4/1990
    5/1990
    ;
    run;
    

    SCAN 从字符串中获取第 N 个单词,MDY 根据月、日和年创建 DATE。 上面的代码给出了一个月的第一天。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2019-06-03
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多