【问题标题】:Reading in Data into SAS using 'Where' function使用“Where”函数将数据读入 SAS
【发布时间】:2016-02-08 19:44:01
【问题描述】:

由于某种原因,我无法正确读取数据。我希望能够读取大型数据集,但仅限于特定日期,例如 2004 年 1 月至 2004 年 2 月。我的代码如下:

DATA Work.sales_fact;
SET Work.sales_fact_subset;
WHERE '01JAN2004'd <= Order_Date <= '14FEB2004'd;
RUN;

PROC PRINT;
RUN;

我做错了什么?

【问题讨论】:

  • 你缺少一个 AND... WHERE '01JAN2004'd
  • 语法对我来说很好。是什么让你觉得有些不对劲?您收到错误消息吗?返回错误的记录数?检查 Order_Date 是否为数字日期变量。这一步是读取 sales_fact_subset。您的意思是改为阅读 sales_fact 吗?
  • 它似乎没有相应地读取数据。我得到了整个数据集,而不是我要求的那些日期的子集。 @ramb 仍然不起作用。
  • 你说得对,我很惭愧我不知道这种语法会起作用。我将使用 SASHelp 数据集留下一个示例作为答案。
  • 我猜你的日期实际上不是 SAS 日期,如果你从 SQL 等数据库中读取,它可能是一个日期时间变量。

标签: sas data-manipulation data-management


【解决方案1】:

我想你已经切换了 DATASETDATA 是您想要创建的。 SET 是数据的来源。

DATA Work.sales_fact_subset ;
SET Work.sales_fact;
WHERE '01JAN2004'd <= Order_Date <= '14FEB2004'd;
RUN;

PROC PRINT data=Work.sales_fact_subset;
RUN;

【讨论】:

  • 谢谢您,先生,您真是个天才。我不敢相信我没有得到那个,谢谢!
【解决方案2】:

这里是这个工作的一个例子.. 请检查您的数据集。

data want;
set sashelp.rent;
where "01feb1999"d <= date <= "02feb2003"d;
run;

【讨论】:

    【解决方案3】:

    如果您的表名和日期结构正确,则您的查询是正确的。这是我对正确结果集所做的示例。

     data inputs;
           input Date1 date9. ;
           Format date1 date9.;
           cards;
    01JAN2004 
    02FEB2004
    03MAR2004
    04JUN2004
    05JUL2004 
        ;
    
    
    
    DATA inputss;
    SET inputs;
    WHERE '01JAN2004'd <= Date1 <= '14FEB2004'd;
    RUN;
    
    PROC PRINT;
    RUN;
    

    【讨论】:

      猜你喜欢
      • 2020-12-08
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多