签到
苹果/安卓/wp
苹果/安卓/wp
客户端
0.0
0.00
推广加币
数据VIP
升级SVIP
注册
|
登录
项目交易
CDA数据分析师
CDA网校
CDA社区
CDA认证考试
CDA俱乐部
CDA Live
在线教育
JG学术培训
经管云课堂
CDA网校
CDA数据分析研究院
统计软件培训
金融科技
就学培训网
经管题库
培训证书查询
成为签约讲师
经管文库
专家入驻
学术博客
就学平台
美国在职研究生
论坛BBS
服务一览
VIP服务
数据VIP
数据库
兑换商城
广告服务
案例库
软件销售
校园代理
文献下载
会员课服务
我的
帖子
收藏
好友
我的空间
关注的人
关注的贴
找人
文库
任务
道具
勋章
网站地图
搜索
搜索
用户
人大经济论坛
›
标签
›
sas数据整理
标签: sas数据整理
经管大学堂:名校名师名课
相关帖子
版块
作者
回复/查看
最后发表
如何将身高、体重、bmi合并到edc_vstest变量中去,并将三个变量的值输出到edc_vsres
SAS专版
yangtouniu8
2019-8-13
2
978
lovexialulu
2019-8-14 09:15:51
更多...
相关日志
分享
转载--SAS数据整理的16个技巧
dream9876
2015-3-4 18:31
1、修改属性 attrib 2、根据条件删除记录 if 条件 then delete; 3、分拆数据集 data master missing; merge old new(in=x); by id; if x=0 then output missing; else output master; run; 4、利用attrib删去所有label data want; set have; attrib _all_ label=""; run; 5、keep 保留变量 data abc; set ad; keep name label; run; 6、drop 删除变量 data abc; set ad; drop name label; run; 7、Missing(),如果变量有缺失值,则返回真。 如 data test_miss; set learn.blood; if missing(Gender) then MissGender + 1; if missing(WBC) then MissWBC + 1; if missing(RBC) then MissWBC + 1; if Chol lt 200 and not missing(Chol) then Level = 'Low '; else if Chol ge 200 then Level = 'High'; run; 当变量名形如x1-x5,可以调用missing(of x1-x5).此种写法也可用于诸如sum等函数。 8、Ranuni.返回0到1的随机数。 若以0作为种子,SAS将以系统时间作为种子产生随机数。 9、Lag返回前一个观测值的函数。 看下面的代码 data look_back; input Time Temperature; Prev_temp = lag(Temperature); Two_back = lag2(Temperature); datalines; 1 60 2 62 3 65 4 70 ; 得到结果为 Listing of LOOK_BACK Obs Time TemperaturePrev_temp Two_back 1 1 60 . . 2 2 62 60 . 3 3 65 62 60 4 4 70 65 62 lag返回前一个观测值,lag2将返回往前数两个的观测值,不是指两个观测值。呵呵。 lag的 一般作用为计算两个变量的差值 。 将上例略微修改一下, 计算两天的温度差。 data diff; input Time Temperature; Diff_temp = Temperature – lag(Temperature); datalines; 1 60 2 62 3 65 4 70; 当然更直接的用法是用Diff函数。 data diff; input Time Temperature; Diff_temp = dif(Temperature); datalines; 1 60 2 62 3 65 4 70 ; 10.Compbl:将字符串中两个或两个以上的空格删除只剩一个空格(即 compress blank) 。 11.Compress删除空格或指定的字符。 假设有一个名为电话号码的变量,由于其来源的不同,导致格式多样。 Phone (908)232-4856 210.343.4757 (516) 343 - 9293 9342342345 现在想去掉左右括号,点号和-号。 data phone; length PhoneNumber $ 10; set learn.phone; PhoneNumber = compress(Phone,' ()-.'); drop Phone; run; compress的参数称为修饰语(modifier), 各个修饰语的意思如下 d 删除数字 a 删除大小写字符 、 i 忽略大小写 k 保留字符串 s 删除空格,制表符等 p 删除标点符号 例如 函数 作用 返回值 compress(String,,'a')删除所有字符串 compress(String,,'kd')删除除数字外的其它字符 compress(String,'wxyz','i')忽略大小写删除 wxyz compress("A?B C99",,'pd')删除标点符号和数字 AB C 11、连接字符串。||或者!!将连接两个字符串为一个字符串,其长度等于两个字符串长度之和。 比方说one=ABC,two=DEF,则one||Two将返回ABCDEF. CAT函数 等同于||,除了返回的字符串的长度以外,其缺省值是200. Cats函数 在连接字符串前去掉字符串前面和后面的空格。 Catx类似于 Cats ,在去掉前后的空格后,会在连接的两字符串中间插入分隔符。 下述代码为其例子。 title "Demonstrating the Concatenation Functions"; data _null_; Length Join Name1–Name4 $ 15; First = 'Ron '; Last = 'Cody '; Join = ':' || First || ':'; Name1 = First || Last; Name2 = cat(First,Last); Name3 = cats(First,Last); Name4 = catx(' ',First,Last); file print; put Join= / Name1= / Name2= / Name3= / Name4= /; r un; 输出结果 Demonstrating the Concatenation Functions Join=:Ron : Name1=Ron Cody Name2=Ron Cody Name3=RonCody Name4=Ron Cody 12、Find函数。其语法形式如下 find(string, find-string, modifiers, starting-position) data WORK.ONE; Text='Australia, US, Denmark';Pos=find(Text,'US','i',5); run; 【注意】 ,不管起始位置是多少,返回的位置数值始终是在源字符串中的位置。 13、字符串拆分函数Scan. Scan函数提出以空格或标点符号隔开的第n个单词。不同于trim,trim只是提取字符。 【功能】从字符表达式s中搜取给定的n个单词 【类别】 字符函数 【语法】 1. Scan(s,n) n为正数时,从字符s末尾提取n个字符 2. Scan(s,n) n为负数时,从字符s开始提取n个字符 【注意】 1. 如果缺失指定的生成变量的长度,系统默认长度为200. 2. 如果|n|=0或大于字符s的长度,则该函数返回空格。 【例子】 data a; arg='ABC.DEF(X=Y)'; word=scan(arg,3); put word; run; data b; arg='ABC.DEF(X=Y)'; word=scan(arg,-3); put word; r un; data c; arg='ABC.DEF(X=Y)'; word=scan(arg,-20); put word; run; data d; input Arr $ 22.; ArrivalGate=scan(Arr,1,' '); DepartureGate = scan(Arr,2,' '); put DepartureGate ArrivalGate arr; cards; Arrival DepartureGates ; run; 14、比较字符串函数Compare COMPARE(string–1, string–2,modifiers ) 选项说明 i 忽略大小写 l 去掉前导空格 n 取引号内部分比较 及忽略大小写 :将较长字符串截短与较短字符串等长 data test; infile datalines missover; input string1 $char8. string2 $char8. modifiers $char8.; result=compare(string1, string2, modifiers); datalines; 1234567812345678 123 abc abc abx xyz abcdef aBc abc aBc AbC i abc abc abc abc l abc abx abc abx l ABC 'abc'n ABC 'abc'n n '$12'n $12 n '$12'n $12 nl '$12'n $12 ln ; proc print data=test; run; 结果为 Obs string1 string2 modifiers result 1 12345678 12345678 0 2 123 abc -1 3 abc abx -3 4 xyz abcdef 1 5 aBc abc -2 6 aBc AbC i 0 7 abc abc -1 8 abc abc l 0 9 abc abx 2 10 abc abx l -3 11 ABC 'abc'n 1 12 ABC 'abc'n n 0 13 '$12'n $12 n -1 14 '$12'n $12 nl 1 15 '$12'n $12 ln 0 注意:nl和 ln结果不同, 15、模糊匹配函数Spedis. 例如 data fuzzy; input Name $20.; Value = spedis(Name,'Friedman'); datalines; Friedman Freedman Xriedman Freidman Friedmann Alfred FRIEDMAN ; run; 返回结果如下 Listing of FUZZY Name Value Friedman 0 Freedman 12 Xriedman 25 Freidman 6 Friedmann 3 Alfred 100 FRIEDMAN 87 当两个字符串完全匹配时,将返回0. 第一个字符匹配错误,将比其它字符匹配错误所得的处罚分数更大。 16、字符串替换 函数Translate会替换某个字符,而Transwrd会替换某个单词 。 例如 data trans; input Answer :$5. @@; Answer = translate(Answer,'ABCDE','12345'); datalines; 14325 AB123 51492 ; run; 得到结果如下 Answer ADCBE ABABC EAD9B Tranwrd函数 经常用于标准化地址等,如以Street替换St.,以Road替换Rd.,等等。 例如 data _null_; string1=tranwrd('abcx apple abc', 'apple', 'pear'); put string1=; run; 结果为 string1=abcx pear abc
1 次阅读
|
0
个评论
更多...
京ICP备16021002-2号
京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明
GMT+8, 2024-5-1 16:17
积分 0, 距离下一级还需 积分