繁体   English   中英

如何使用proc sql计算SAS范围之间的特定变量?

[英]How to count a specific variable between a range in SAS using proc sql?

我是 SAS 新手,我在使用proc.sql遇到了问题。 我有一个垂直数据集:

ID    Code  Time
001   1     0:00:00.00
001   1     0:10:00.00
001   2     0:20:00.00
...   ...   ...
001   9     23:50:00.00

我很想有一个表格来总结每个 ID 在 0:00:00.00 和 23:50:00.00 之间有多少 N 代码 1、N 代码 2 等等。 所以,输出看起来像这样:

ID   Code  N
001  1     28
001  2     17
001  3     5
...

现在,我有这样的事情:

proc sql;
select Code,ID
from have
where Time between 0:00:00.000 and 23:50:00.000;quit;

如果有人有更简单的方法并且它不是proc.sql ,那也没关系。 非常感谢!

要过滤分析中使用的数据,请使用 WHERE 语句(或 SQL 语句的 WHERE 子句)。 确保使用与变量中的值类型匹配的值。

where time between '00:00:00't and '23:00:00't

要计算观察的数量,您可以使用 PROC SQL 和 COUNT() 聚合函数与 GROUP BY 子句。

proc sql;
select Code,ID,count(*) as N
  from have
  where Time between '00:00:00't and '23:00:00't
  group by code, id
;
quit;

或者只是使用常规的 SAS 代码来进行计数。

proc summary data=have nway;
  where Time between '00:00:00't and '23:00:00't;
  class code id;
  output out=want(rename=(_freq_=N));
run;

如果您的 TIME 变量实际上是字符,那么如果您的某些字符串的 HOUR 数字只有一位数字,则尝试限制范围将很困难。 因此,将其转换为时间值(自午夜以来的秒数)以进行范围测试。

  where input(Time,time12.) between '00:00:00't and '23:00:00't;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM