count - 如何计算列中特定模式的出现次数 - SAS?
问题描述
我有一个类似于我在下面包含的数据集:
Hour Value
1 0
2 14
3 50
4 110
5 0
6 23
7 35
8 72
9 99
10 133
11 187
12 0
13 70
14 100
15 0
16 63
17 0
我想返回包含值从 0 增加到 100 的次数的输出,中间没有任何零。所以在这个例子中,我想返回'3'。请注意,小时 15、16 和 17 不会被计算在内,因为在返回零之前该值永远不会达到 100。
任何帮助将不胜感激!
解决方案
假定value
总是重置为0
,否则总是增加。
你会需要
- 标记变量以跟踪是否
value
达到或超过阈值100
- 重置为
value
- 重置为
- 计数变量以保持达到的阈值数量
标志和计数应该被编辑,retain
这样它们就不会在隐式循环的顶部被重置为缺失。
例子:
data have; input
Hour Value; datalines;
1 0
2 14
3 50
4 110
5 0
6 23
7 35
8 72
9 99
10 133
11 187
12 0
13 70
14 100
15 0
16 63
17 0
;
data want;
set have;
retain flagged; * explicitly specify that flag is to be retained;
if value = 0 then flagged = 0;
if not flagged and value >= 100 then do;
flagged = 1;
count + 1; * sum statement, count implicitly retained;
end;
run;
推荐阅读
- python - 我应该使用什么shebang来始终指向python3?
- node.js - 如何在 Node-Express / Vue Web 应用程序中管理 OAuth?
- php - WordPress 从 get_categories 意外返回
- r - 使用 kableExtra 的 kbl() 和 save_kable() 将表格作为 word 表格导出到 word 文档?
- javascript - 谷歌地球引擎:用时间平均值将波段添加到图像集合
- javascript - javascript canvas.toDataURL() 可以在不直观地生成画布的情况下工作
- c# - 如何在 ASP.NET Core App 中开发插件功能
- python - pytesseract 给出错误 PermissionError: [WinError 5] Access is denied
- javascript - Google 应用程序脚本错误“无法建立数据库连接。检查连接字符串、用户名和密码。”
- yarn-v2 - 纱线2初始化,添加失败