【发布时间】:2017-11-24 13:28:51
【问题描述】:
大家,
我需要计算按用户和ID_option 分组的最后 3 小时使用总和(使用是数据集中的列之一)的每条记录(每一行)。
每行(行)代表一条记录(一小时有大约百万条记录)。例如,我制作了一个只有几条记录的表(包括所需的列sum_usage_3 hour):
User ID_option time usage sum_usage_3hr
1 a1 12OCT2017:11:20:32 3 10
1 a1 12OCT2017:10:23:24 7 14
1 b1 12OCT2017:09:34:55 12 12
2 b1 12OCT2017:08:55:06 4 6
1 a1 12OCT2017:07:59:53 7 7
2 b1 12OCT2017:06:59:12 2 2
我尝试过使用类似下面的代码,它返回给我所有时间的总和,而不仅仅是过去 3 小时。我并不感到惊讶,但我不太清楚我将如何在SAS 中做到这一点。
proc sql:
CREATE table my_table
SELECT *, SUM(usage) AS sum_usage_3hr
FROM prev_table WHERE time BETWEEN TIME and intnx('second', time, -3*3600)
GROUP BY User, ID_option;
RUN;
欢迎任何帮助,谢谢。在proc sql 中没有必要这样做,如果可能的话,数据步骤也是可以接受的。我只是假设我需要某种分区。
提前致谢。
【问题讨论】:
-
尝试 Proc expand(如果你有 ETL 包)support.sas.com/documentation/cdl/en/etsug/63939/HTML/default/…