SAS中的数据清洗

1.数据合并

(1)利用set语句纵向合并

data 数据集;

     set 数据集1(数据集选项)数据集2(数据集选项).....;

run;

说明:将若干个数据集纵向合并,并存放在data语句建立的数据集中;当set后面只有一个数据集时,就相当于复制的作用。当要合并的变量在不同数据集中变量类型不一致时,无法直接合并,需转换变量类型。

注意:data语句的作用是创建数据集,不是打开数据集。

两个非常实用的数据集选项:

set 数据集1(in=临时变量1)数据集2(in=临时变量2).....; 

*当合并的记录属于数据集1,“临时变量1”的值为1,否则为0;临时变量不会在结果出显示,需赋值给新变量,即“新变量=临时变量”;

set 数据集1(rename=(原名1=新名1....)数据集2(rename=(原名2=新名2....)).....; *当变量在不同数据集中名不一样,则需重命名;

(2)利用Merge语句横向合并:

data 数据集;

     merge 数据集1(数据集选项1) 数据集2(数据集选项2)....;

     by 变量1 变量2 .....;

run;

说明:by语句指定索引(如:id); 如果数据集事先没有按索引变量(id)排序, 需先分别对各个数据集排序后才能合并。

*==合并ab1和ab2数据集的交集;

data  ab;

        merge ab1(in=d1) ab2(in=d2); /*产生标识两个数据集的临时变量ab1和ab2*/

        by id;

        if d1=1 and d2=1;

proc print;

run;

2.数据对比

proc compare <base=数据集1 compare=数据集2> <nosummary>  <transpose>;

         by 变量1 变量2 .......;

         id  变量1 变量2 .......;

run;

说明:选项base和compare分别指定两个比较和被比较的数据集; “nosummary”:不显示一些概括性的结果;“transpose”按记录显y示不一致的结果,如不指定该选项,默认按变量显示不一致的结果。by语句:指定索引变量,避免错位;id语句:指定索引变量,可以让你方便地根据变量找到相应的观测,如不指定,默认结果只显示第几行;

proc compare base=ab compare=cd nosummsry transpose;

      by id;

      by id;

run;

3.查找异常值

一般式:

data 新数据集;

        set 已有数据集;

        if|where 条件语句;

proc print;

run;

示例:

data outline;                                         data outline;

     set dem.b1;                                            set dem.b1;

     if (gender not in(1,2));                               where (gender not in(1,2));

proc print;                                            proc print;

run;                                                   run;

IF和where的区别:

   1.IF和where都可以应用:

      set 有条件的复制数据集时,其后面紧跟的条件语句可以用IF或where。 但where运行更快,因where是在数据读入前就执行选择条件的,IF是在读入数据后执行。

2.只能用IF语句的情况:(只能用IF语句,不能用where)

     (1)使用SAS自动变量时;

     (2)当指定的条件变量是新产生的变量时;

3.只能用where语句的情况:(只能用where,不能用IF语句)

     (1)当使用了某些特殊运算符时;

     (2)当调用proc过程,只选择部分观测执行该过程时;

     (3)当做数据集选项时,只能用where。

特殊运算符作用

between......and指定介于数值变量两个值之间的观测

contains "指定的字符”指定字符变量中包含指定字符的规则

like "指定的字符”指定字符变量中与指定字符相似的规则,

模糊部分可用%或_代替,其中%代表多个字符,_代表1个字符。

is null或 is missing指定包含缺失值的观测

like "_t_" 指查找变量长度为3且中间为“t”的观测;like "%t%" 查找任意含t的观测。

4.缺失值的填补

SAS主要通过proc mi过程来实现,mi是mutiple impuation(多重填补)的缩写。

proc mi <out=数据集> <round=> <mininum=> <maximum> ;

     mcmc;

     var 变量1 变量2.......;

run;

说明:“out=数据集”是把填补后的数据保存到自定义的数据集中;“round=”选项是指定填补值的小数位数,round=1表示保留只整数;“mininum”和“maximum”是指定填补值的最小值和最大值;

          “mcmc”语句是采用马尔科夫链蒙特卡罗模拟方法来产生一个抽样分布,作为填补缺失值的填补技术; “var”指定哪些变量需要填补。

            mcmc, Mrakov chain Monet Carlo.

           SAS 默认产生5个填补完整的数据集,每个数据集的填补值都不同。可用proc mianalyze过程,对5次填补结果进行综合分析。

示例:

data b1_imputed;

     set dem.b1;

run;

proc mi data=b1_imputed out=nomissing round=1 1 1 mininum=150 1 1 maximum=200 5 5;

     mcmc;

     var heigh y2 y4;

run;

proc print data=nomissing;

run;

缺失数据的更新

data 新数据集;

     update 旧数据集 新数据集;

         by 索引变量;

run;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,670评论 0 11
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,076评论 0 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,709评论 0 10
  • 一.建立数据集的基础和高级议题从最简单的建立SAS数据集开始,逐步深入,介绍如何产生新变量、如何对数据集中的变量进...
    apricoter阅读 3,824评论 1 8
  • 在玩游戏时,都会订有游戏规则,参与玩游戏的人,要遵照规则,这个游戏才玩得下去。如果有人不肯遵守游戏规则,那对不起,...
    钱多多在简书阅读 558评论 1 2