1.查找缺失值的万能程序

data missing;
set sasuser.xb;
array cha[*] _character_  \*利用*好不指定cha数组中的字符型变量个数*\
do i=1 to dim(cha);       \*指定循环次数为数组cha中的元素数*\
if missing(cha[i]) then output;
end;
array num[*] _numeric_;\*利用*号不指定num数中的数值型变量个数*\
do i=1 to dim(num);    \*指定循环次数为数组num中的元素数*\
if missing(num[i]) then output;
end;
proc print;
run;

cha[*]和num[*]的意思是建立数组cha和num,但不指定数组中的元素数,具体有多少个由SAS根据变量来自己判断。

dim()函数是专门针对数组的函数,它的作用是返回指定数组所含的元素个数。如指定数组array x[*]a b c,则dim(x)返回值为3.

2.查找异常值

基本格式为:

data 新数据集;

set 已有数据集;

if|where 条件语句;

proc print;

run;

这几句语句的意思是建立一个新数据集,然后利用set语句把所有的数据集复制进来,但并非全部复制,而是根据if或where语句指定的条件,仅复制符合条件(如缺失或异常等)的记录。

**if和where的区别

1)if和where都可以使用的场合

在利用set语句有条件地复制数据集时,set后紧跟着条件语句,此时用if和where都可以。但where的运行速度要快一点。

2)只能用if的几种场合

使用SAS的自动变量时;如果指定的条件变量是新产生的变量,只能用if,不能用where。

3)只能用where的几种场合

当使用某些特殊运算符时(between…and,contains);当调用某一proc过程时,如果要选择部分观测执行该过程,只能用where语句,不能用if语句。

还有当做数据集选项使用时,只能用where,不能用if。

3.查找异常值的万能程序

%let data=sasuser.xb;
%let id=id;
%macro outline(var=,low=,high=);
data outline;
set &data.(keep=&id. &var.);
length variable $20. reason $20.;
variable="&var.";
value=&var.;
if &var.<&low. and not missing(&var.) then do;
reason="过低";
output;
end;
else if &var.>&high. and not missing (&var.) then do;
reason="过高";
output;
end;
drop &var.;
proc append base=outliner1 data=outline;
run;
%mend outline;
%outline(var=height,low=150,high=200);
%outline(var=weight,low=40,high=100);
%outline(var=y1,low=1,high=5);
%outline(var=y2,low=1,high=5);
%outline(var=y3,low=1,high=5);
%outline(var=y4,low=1,high=5);
%outline(var=y5,low=1,high=5);
proc print data=outliner1;
run;

需要修改的地方:第一行的数据集;第二行的id变量;最后几行的7个outline。

SAS学习之查找异常值相关推荐

  1. SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制...

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...

  2. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理...

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

  3. SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(2)数据获取与数据集操作 1. SET/SET效率高,建立的主表和建表索引的查询表一般不排序, 2. BY语句,DATA步中,BY语句规定 ...

  4. SAS学习步骤和参考书

    SAS的强大毋庸置疑,要精通SAS必先要熟悉其结构及不断提高自己的编程能力(虽然它有菜单可以用,其实一般都不用,写程序比菜单灵活多了,而且效率高多了,工作中都以编程为主.所以想点点鼠标就能精通SAS的 ...

  5. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

  6. python处理异常值--箱型图查找异常值并替换

    箱型图查找异常值并替换 定义为值大于上四分位或者小于下四分位的值位异常值,若是异常值,则用mean替换,项目中遇到的,但是这个可能或将0值也替换了,但是0值不是异常值,故而舍弃这种方法. import ...

  7. multimap学习之查找操作count,find,lower_bound,lower_bound,upper_bound,key_comp, value_comp

    本篇学习multimap查找和观察器操作,具体的函数如下 查找 count 返回匹配特定键的元素数量 (公开成员函数) find 寻找带有特定键的元素 (公开成员函数) contains (C++20 ...

  8. SAS学习笔记1——基础知识(库、PDV、变量选择、观测值排序、创建新变量

    SAS学习笔记1--基础知识 1.逻辑库.临时库.永久库 2.数据步 2.1数据步语法 2.2 数据步的编译和执行过程 2.3变量的选择 2.3.1 keep和drop语句 2.4变量的重命名rena ...

  9. 诚之和:什么是异常值?如何在统计数据中查找异常值

    异常值是数据集的重要组成部分.它们可以保存有关您数据的有用信息.异常值可以为您正在研究的数据提供有用的见解,并且它们可以对统计结果产生影响.这可能会帮助您发现不一致之处并检测统计过程中的任何错误.因此 ...

最新文章

  1. Fastlane 入门实战教程从打包到上传iTunes connect
  2. 王者荣耀服务器维护啥意思,王者荣耀
  3. 怎样把pdf转换成word
  4. Linux下qt桌面程序闪退,qt无法正常使用
  5. unsigned int 和 int
  6. testng接口自动化测试_Java+Maven+TestNG接口(API)自动化测试教程(10) 使用 Jenkins 构建自动化测试持续集成...
  7. 中动态路径加载_GOT段在linux系统中实现代码动态加载的作用和其他段的说明
  8. wpf textbox能扫描不能手输_3D扫描仪性能怎么样 3D扫描仪价格介绍【详解】
  9. 剑指Offer——和为s的两个数字
  10. 获取Access数据库中的用户表名
  11. 自定义填充图案插件 cad_CAD软件中如何自定义CAD填充图案?
  12. 免费PR模板 20个Premiere简单标题文字动画PR模板
  13. OAuth2资源服务器
  14. Ubuntu安装和常用软件
  15. VMware ESXi 安装 IPMITOOL 工具
  16. android客户端跟服务器交换数据,Android客户端和服务器端数据交互的第一种方法...
  17. python 年月日转换日期_python 二〇二〇年九月二十四日 汉字日期转化为数字日期...
  18. 电脑突然重启解决方案
  19. office2007加载缓慢_word2007打开很慢的解决方法
  20. 关于let你不知道的知识点——红宝石书笔记记录

热门文章

  1. 燕麦云何洋开讲丨「真假海盗」遭遇战:黑客不但杠上好莱坞,还要把电影变成现实
  2. 计算机科学与技术班徽的意义,北京市义务教育课程改革实验小学信息技术教材介绍.ppt...
  3. leetcode系列-349.两个数组的交集
  4. windows上Qt中遇到关于C2039:XXX不是XXX的成员的奇怪报错
  5. USBCNC 雕刻双面PCB教程
  6. vpwm的控制变频_PWM控制器SG3525的变频控制
  7. 管道无损检测学习记录2 #基础概念+融合技术
  8. 【电脑设置wifi大揭秘】随身wifi怎么用?
  9. java毕业生设计防疫宣传系统计算机源码+系统+mysql+调试部署+lw
  10. k8s滚动升级_kubernetes滚动更新