[英]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.