【问题标题】:sas date format to read yyyymmdd读取 yyyymmdd 的 sas 日期格式
【发布时间】:2015-12-17 02:15:32
【问题描述】:

我已使用 Proc 导入将数据集导入 SAS。现在的问题是我无法更改该数据集中的日期格式。在数据中,销售日期的日期为 YYYYMMDD,我想将其更改为 02Dec2005。请在下面找到数据。请找到用于导入的 SAS 代码

数据: StoreID SalesDate InvoiceNumber ProductCode qty SalesType Brick

A0110515 20051205 225004 3519671 1 0 1638

proc import out=sample datafile="C:\Users\Vigneshwaran\Desktop\Vignesh\vipin1.txt" 
dbms=tab replace;
getnames=yes;
datarow=2;
run;

感谢和问候, V

【问题讨论】:

    标签: date format sas


    【解决方案1】:

    您必须使用单独的步骤。 PROC IMPORT 不允许您更改格式。

    PROC DATASETS 可用于更改格式(除其他外)。

    proc datasets lib=work nolist;
    modify sample;
    format SalesDate date9.;
    run;
    quit;
    

    【讨论】:

      【解决方案2】:

      根据您的数据导入方式和 SalesDate 列的属性,可以有 2 个解决方案,

      /* IF SalesDate is imported as Numeric */
      proc datasets lib=work nolist;
        modify sample;
        format SalesDate date9.;
      run;
      
      /* IF SalesDate is imported as Character */
      data want;
        set sample(rename=(salesdate=sdate));
        length SalesDate 8.;
        format SalesDate date9.;
        SalesDate=input(SDate,yymmdd8.);
        drop SDate;
      run;
      

      【讨论】:

        【解决方案3】:

        试试这个:

        salesdate_1 = input(put(salesdate,10.),yymmdd10.);
        

        然后只添加您的格式 date9。

        我一直在处理这个问题。

        【讨论】:

          【解决方案4】:

          PROC DATASETS 可用于更改格式。但 PROC IMPORT 会将 20051205 读取为整数。解释为 DATE 值,即 1960 年 1 月 1 日之后的 20,051,205 天。那是 1960 年之后的 20,000 多年。2005 年 12 月 5 日是 1960 年 1 月 1 日之后的 16775 天。因此,您需要将数字转换为字符,然后返回数字。

          我的建议是交互式运行 PROC IMPORT 并保存代码。然后您可以修改代码,添加类似

          SaleDate = INPUT(PUT(salesdate,8.),YYMMDD8.) ;
          FORMAT SaleDate DATE9. ;
          

          将整数转换为 SAS 日期。如果无法修改代码,请使用上述转换运行数据步骤,或者在 IMPORT 之后使用相同转换运行 PROC SQL。

          DATA final (RENAME=(saledate=salesdate));
            SET sample ;
            SaleDate = INPUT(PUT(salesdate,8.),YYMMDD8.) ;
            FORMAT SaleDate DATE9. ;
            DROP salesdate ;
          RUN ;
          

          PROC SQL STIMER EXEC ;
            CREATE TABLE final AS
              SELECT StoreID, INPUT(PUT(salesdate,8.),YYMMDD8.) AS SalesDate,
                     InvoiceNumber, ProductCode, qty, SalesType, Brick
                FROM sample
            ;
          QUIT ;
          

          其中 PROC SQL 后跟 DomPazz 的 PROC DATASETS 以将格式更改为 DATE9。

          【讨论】:

          • 我使用了你的 DATA 最终代码。我在销售日期中缺少值。我在日志窗口中收到以下消息。注意:第 141 行第 14 列的函数 INPUT 参数无效。StoreID=A0110515 SalesDate=********* InvoiceNumber=225004 ProductCode=3519671 qty=1 SalesType=0 Brick=1638 SaleDate=。 _ERROR_=1 _N_=1
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-12
          • 2018-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-11
          相关资源
          最近更新 更多