【问题标题】:Daily data not showing days with no data - need 0-dates for report also每日数据未显示没有数据的日期 - 报告也需要 0 日期
【发布时间】:2019-04-09 13:38:50
【问题描述】:

我正在为 SAS VA 制作报告数据。数据示例:

日期 - 客户

2019 年 3 月 1 日 - 4

2019 年 3 月 2 日 - 5

2019 年 3 月 3 日 - 2

2019 年 3 月 5 日 - 9

所以我在 2019 年 3 月 4 日获得了 0 个客户。那一天在我的报告数据中没有显示为 0,因为它不在原始数据中。

有没有一种方便的方法可以从 SAS EG 获取(所有)年份的所有日期,然后直接加入工作?

输出应该是:

2019 年 3 月 1 日 - 4

2019 年 3 月 2 日 - 5

2019 年 3 月 3 日 - 2

2019 年 3 月 4 日 - 0

2019 年 3 月 5 日 - 9

有什么建议吗?

谢谢!

【问题讨论】:

  • 请您显示无法正常工作的特定代码,或者请分享您的努力
  • 您现在的计数如何?显示您正在使用的代码。如果您从汇总表开始,那么您如何知道是否缺少前导日期或尾随日期?
  • 代码类似于:select open_dt, count(distinct customer_id)as count group by open_dt。

标签: sql proc-sql enterprise-guide


【解决方案1】:

不确定您实际上在做什么,但您可以生成一个数据集,每个日期包含一个观察结果并将它们合并在一起。

data have ;
  input date customers;
  informat date date. ;
  format date date9.;
cards;
01Mar2019 4
02Mar2019 5
03Mar2019 2
05Mar2019 9
;

proc sql ;
  create table all_dates as 
  select min(date) as mindate, max(date) as maxdate
  from have
  ;
quit;

data all_dates;
  set all_dates;
  do date=mindate to maxdate;
    customers=0;
    output;
  end;
  format date date9.;
  keep date customers;
run;

data want;
  merge all_dates have;
  by date;
run;

结果:

Obs         date    customers

 1     01MAR2019        4
 2     02MAR2019        5
 3     03MAR2019        2
 4     04MAR2019        0
 5     05MAR2019        9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2020-06-20
    • 2012-07-14
    相关资源
    最近更新 更多