sql - 如何使用proc sql计算SAS范围内的特定变量?
问题描述
我是 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 和带有 GROUP BY 子句的 COUNT() 聚合函数。
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;
推荐阅读
- python-3.x - 在 if/else 语句中使用方括号对函数的参数有什么作用?
- matlab - 在 Matlab 中的另一个矩阵中查找矩阵的行成员
- magento2 - magento 1 到 magento 2 问题迁移
- xcode - ld:在 iOS 上为 expo 裸工作流应用程序找不到 -lAnalytics 错误的库
- java - 如何访问存储在 OCI 对象存储中的 Lucene 索引?
- python - ImportError:无法从“keras.layers”(/home/mona/venv/fall/lib/python3.8/site-packages/keras/layers/__init__.py)导入名称“Deconvolution3D”
- python - 如何使用 rtlsdr 作为源对特定频率进行带通滤波器?
- azure - Azure B2C 的 Apple 服务 ID(客户端 ID)在哪里?
- ios - 尝试呈现菜单场景并创建按钮时出现致命零错误(swift SpriteKit)
- latex - 有没有办法覆盖 org-mode 默认导出行为?