当前位置: 首页 > news >正文

SAS笔记(5) FLAG和计数器

考虑这样一种场景:我们有一份患者入院检查的数据,我们知道一个患者有可能会多次去医院做检查,每次检查的结果可能为阳性,也可能为阴性。我们现在关注的是某一个患者在若干次检查中是否出现了阳性结果,在R中我们可以使用any函数,在python中可以利用pandas的groupby函数,在SAS中该如何处理呢?今天就立一个flag来解决它。

1.

***创建数据
DATA LAB;
   INPUT PATNO VISIT_NO OUTCOME;
DATALINES;
3 1 0
3 2 0
3 3 1
1 1 0
1 2 1
1 3 0
1 4 1
2 1 0
2 2 0
4 1 1
4 2 1
4 3 1
;

***利用Flag变量记住前一个观测的值 
PROC SORT DATA=LAB;
   BY PATNO VISIT_NO;
RUN;

DATA FLAG_TEST;
   SET LAB;
   BY PATNO;

   RETAIN FLAG; ***如果结果阳性,FLAG=1;

   ***初始化 FLAG;
   IF FIRST.PATNO = 1 THEN FLAG = 0;

   ***如果结果阳性,FLAG=1;
   IF OUTCOME = 1 THEN FLAG = 1;

   ***运行到最后一个观测时输出;
   IF LAST.PATNO = 1 THEN OUTPUT;
   DROP OUTCOME VISIT_NO;
RUN;

PROC PRINT DATA=FLAG_TEST;
   TITLE "Listing of Data Set FLAG_TEST";
RUN;

2.利用SUM语句计算每一个病人的阳性结果数目

***注意:数据集lab必须是排好序的;
DATA COUNT_TEST;
   SET LAB;
   BY PATNO;

   ***这里没有必要RETAIN COUNT,因为SUM语句会自动RETAIN

   ***初始化 COUNT;
   IF FIRST.PATNO = 1 THEN COUNT = 0;

   ***出现阳性结果,COUNT加一;
   IF OUTCOME = 1 THEN COUNT + 1;

   ***当遇到最后一个病人,输出;
   IF LAST.PATNO = 1 THEN OUTPUT;
   DROP OUTCOME;
RUN;
PROC PRINT DATA=COUNT_TEST;
   TITLE "Listing of Data Set COUNT_TEST";
RUN;

 

 

参考资料:《Longitudinal Data and SAS: A Programmer's Guide》

转载于:https://www.cnblogs.com/zhangzhangwhu/p/7232434.html

相关文章:

  • 用于检测移动设备(包括平板电脑)的轻量级PHP类
  • 170511、Spring IOC和AOP 原理彻底搞懂
  • CodeChef Forest Gathering —— 二分
  • ReactiveSwift源码解析(九) SignalProducerProtocol延展中的Start、Lift系列方法的代码实现...
  • 在List中删除符合条件的内容
  • 亿级SQL Server运维的最佳实践PPT分享
  • socket简单理解
  • JAVA最佳实践
  • 关于Hibernate中get和load的区别
  • bootstrap-table 怎么自定义搜索按钮实现点击按钮进行查询
  • 新产品为了效果,做的比較炫,用了非常多的图片和JS,所曾经端的性能是非常大的问题,分篇记录前端性能优化的一些小经验。...
  • 百度地图坐标拾取
  • @RequestMapping-占位符映射
  • 夺命雷公狗TP3.2.3商城13-----无限极分类添加
  • 【征文】Hadoop十周年特别策划——我与Hadoop不得不说的故事
  • 自己简单写的 事件订阅机制
  • Android框架之Volley
  • Debian下无root权限使用Python访问Oracle
  • Javascript设计模式学习之Observer(观察者)模式
  • leetcode46 Permutation 排列组合
  • Magento 1.x 中文订单打印乱码
  • oldjun 检测网站的经验
  • React的组件模式
  • SpringBoot 实战 (三) | 配置文件详解
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue.js-Day01
  • 从零开始在ubuntu上搭建node开发环境
  • 时间复杂度与空间复杂度分析
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 赢得Docker挑战最佳实践
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #Lua:Lua调用C++生成的DLL库
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C语言)逆序输出字符串
  • (JS基础)String 类型
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (简单) HDU 2612 Find a way,BFS。
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)linux下的时间函数使用
  • (转)母版页和相对路径
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net FrameWork总结
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET关于 跳过SSL中遇到的问题
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /run/containerd/containerd.sock connect: connection refused
  • ::前边啥也没有