楼主: 曲歌99
923 0

[数据挖掘理论与案例] 技能 | 利用SAS进行数据清洗技术——缺失值查询 [推广有奖]

版主

学术权威

93%

还不是VIP/贵宾

-

威望
2
论坛币
160054 个
通用积分
11261.7125
学术水平
1269 点
热心指数
1346 点
信用等级
1142 点
经验
120426 点
帖子
2085
精华
40
在线时间
7848 小时
注册时间
2010-5-2
最后登录
2023-8-15

初级学术勋章 初级热心勋章 初级信用勋章 中级学术勋章 中级热心勋章 中级信用勋章 高级学术勋章 高级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币



数据分析交流群:280848607


数据清洗技术是统计分析之前必做的一步,而且也是非常麻烦的一步,有时甚至花费的时间比统计分析都长。所以没有一定的技巧,这将是个非常烦人的工作。


本篇文章介绍如何利用sas进行缺失值的查询工作。


假定我们有数据集aa,包含如下变量(数据省略):


ID dose gender age t0 t1 a1 a2


最简单的方式当然就是挨个变量找缺失值,如下:


data missing; set aa; if id=. or dose=. or gender=. or age=. or t0=. or t1=. or a1=. or a2=.; proc print; run;

这种方式很好理解,就是利用if语句逐个判断每个变量是否有缺失(注意,如果变量时文本型,不能写=.,而是=" "),但缺点也是显而易见的,如果不是现在的8个变量,而是80个变量,那写一遍估计要累个半死。所以我们用下面的语句节省体力:


data missing(drop=i); set aa; array num{8} id dose gender age t0 t1 a1 a2; do i=1 to 8; if num{i}=. then output; end;

这种方式好像比上面的更复杂了,但效率提高了n倍(取决于你的变量有多少)。这种方式是利用数组判断缺失值,不管有100个还是1000个变量,对数组来说没什么区别,只是数组中变量的个数改变一下而已(如本例中的8)。当这种方式仍不是最节省的,因为我们还是需要把这8个变量一一写出来,那可不可以就不写变量名呢。当然可以,还有更简单的方式如下:


data missing(drop=i); set aa; array num{*} _all_; do i=1 to dim(num); if num{i}=. then output; end;

当这种方式更简单了,而且是个通用语句,不管你有10个还是1000个变量,都可以用这种方式来查询,一个字母都不用改。当然前提是所有变量都是数值型,如果是文本型,那就应该是num{i}=" "。还有另外一种非常简洁 的方式是利用函数,如下:


data missing(drop=i); set aa; array num{*} _all_; do i=1 to dim(num); if missing(num{i}) then output; end;

用函数的这种方式有什么好处呢?起码有一点,你不用考虑到底是数值还是文本,全部都是missing(变量)就行了。否则你还得想着数值是.,文本是" "。一不小心忘了容易出问题。前面所说的都是假定所有变量都是同一种类型的,如果变量中既有数值型,又有文本型,那怎么办呢?如下程序就很简单了:


data missing(drop=i); set aa; array a _numeric_; do i=1 to dim(a); if missing(a) then output; end; array b_character_; do i=1 to dim(b); if missing(b) then output; end;

毫不夸张地说,这个简直就是个缺失值的通用语句,同时遍历了数据集中的数值型和文本型的所有缺失值。所有的缺失值查找,几乎都可以这一语句来实现,它几乎包含了所有的可能情况,还能苛求什么呢?套用就行了。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:缺失值 Character missing numeric output

已有 1 人评分学术水平 热心指数 收起 理由
飞天玄舞6 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

什么是空?上不怨天,下不尤人;
什么是戒?己所不欲,勿施于人;
什么是清静?诸恶莫作,众善奉行。
您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 10:10