
SAS基础
碧水幽幽泉
致力于大数据、AI、SAS分析。。。
展开
-
SAS常用日期和时间函数简介
SAS常用日期和时间函数有: MDY(m,d,yr) 生成yr年m月d日的SAS日期值 YEAR(date) 由SAS日期值date得到年 MONTH(date) 由SAS日期值date得到月 DAY(date) 由SAS日期值date得到日 WEEKDAY(date)原创 2017-09-19 22:51:34 · 15202 阅读 · 0 评论 -
cmiss与nmiss函数的区别
cmiss与nmiss函数的区别: 两者都是用来对缺失个数进行统计,两者区别就在于前者既能用于数值型也能用于字符型,而nmiss则只能用于数值型。The CMISS function does not convert any argument. The NMISS function converts all arguments to numeric values.cmiss在计算缺失值的时原创 2017-09-20 22:59:01 · 11937 阅读 · 0 评论 -
call symput与call symputx详解
call symput的功能是可以在data step内将值塞到一个macro变量里面。如果这个macro变量已经存在,那这个call就会更新该macro变量的值。用法: call symput (macro变量, text);注:不会自动去除值前后的空格eg.将值Cookie塞入macro变量Gift里面,值必须给予单引号call symput ('Gift','Cookie')原创 2017-09-20 23:00:00 · 24921 阅读 · 0 评论 -
SAS中intck函数计算日期天数间隔等妙用
SAS中intck函数计算日期天数间隔等妙用 大家肯定知道自己几岁,度过了多少个季节。那多少人知道自己从出生到现在有多少个月,多少个周、多少天吗?SAS可以帮你解决,用intck函数,将你的出生日期和今天的日期放在下列函数就OK!可以应用到客户的入网时长等计算中。1.利用intck函数data a;format x date9. y date9.;x='05DEC1转载 2017-09-20 23:04:29 · 40258 阅读 · 1 评论 -
SAS数据集如何将为负数的部分,变为正数
SAS数据集如何将为负数的部分,变为正数B1 B2 B3......(变量)obs1 2 0.5 9obs2 1.3 -0.2 -10obs3 -0.4 -5 -2方法1:data b;原创 2017-09-20 23:06:37 · 1898 阅读 · 0 评论 -
SAS中数据输入和输出的几种方式
SAS中数据输入和输出的方式有:1.按列输入: input 变量名 data score; /*建立关于成绩的数据集*/input name $ 1-10 math 11-12 chinese 17-18 english 26-27; /*对每个变量,按列输入数据*/datalines; /*提示下面是数据行*/bital 90 92 88ma原创 2017-09-20 23:08:56 · 30246 阅读 · 0 评论 -
行保持说明符@和@@用法详解
行保持说明符@和@@用法详解:多个input语句读取同一数据行的数据,使用单尾随符@一个input语句在一个输入行中读取多个观测,则使用双尾随符@@例1:data b;*input x y @;input x y @@;datalines;3.16 2.9 5.8 3 4.9 4.17;proc print;run;例2:data a原创 2017-09-21 22:45:18 · 1517 阅读 · 0 评论 -
SAS宏语句及其功能含义
可在开放代码中使用的宏语句与含义:%COMMENT 注释语句。 %COPY 拷贝语句,从SAS库中拷贝指定的对象。 %DISPLAY 显示宏语句窗口。 %GLOBAL 创建一个全局宏变量。 %INPUT 在宏执行过程中为宏变量赋值。 %LET 创建一个宏变量,同时对其进行赋值。 %MACRO 标识一个宏定义的开始,指定所定义宏的名称及参数等。 %PUT 将指定的文本转载 2017-09-21 22:48:31 · 5945 阅读 · 0 评论 -
批量delete或drop数据集
批量delete或drop数据集经过一系列的程序,work临时文件夹里有了很多过程数据集比如a1,a2,a3……;感觉看着不爽想删掉,怎么办?你可以这么做:proc delete data=a1 a2 a3;run;如果你想精简程序为:proc delete data=a1-a3;run;那么很遗憾,sas出错了,因为proc delete 读不懂a1-a3;如果临转载 2017-09-21 22:50:18 · 2331 阅读 · 0 评论 -
如何使用proc compare比较两个数据集
如何使用proc compare比较两个数据集data one;input student $ gr1 gr2;format gr1 5.2;datalines;1000 64 871001 65 881002 66 89;run;data two;input student $ gr1 gr2;format gr1 5.2;dataline原创 2017-09-21 22:52:11 · 7923 阅读 · 0 评论 -
SAS中数据步常用知识
1.一个完整的数据步与过程步data mydb.student;input id name $ sex $ score;cards;101 张三 男 98102 李四 男 87103 兰兰 女 95;run;proc print data=mydb.student (keep=id name score);run;data sfz;length原创 2017-09-21 23:09:17 · 1934 阅读 · 0 评论 -
SAS中单引号和双引号的区别
SAS中单引号和双引号的区别:1.双引号解析宏:宏变量的时候, 包含在双引号中的宏变量会被替换,而单引号则不会。2.给一个字符变量赋值单引号时需要用双引号引起来;给一个字符变量赋值双引号时需要用单引号引起来data a;a=' " ' ;b=" ' ";run;原创 2017-09-22 00:07:22 · 5414 阅读 · 0 评论 -
ktruncate用法详解
ktruncate函数:ktruncate(a,n,m)将数值型变量a从左到右第n位开始截取m位的值。小数点占一位。取到的值按字符串存储。例如: date test;a=122/3;b=ktruncate(a,2,2);run;将得到的a=40.666666667 而b=0.。注意这里b是字符型。这里对于a只显示12位,而b能取到最多也只有到a的第12位的值。原创 2017-09-20 22:58:04 · 809 阅读 · 0 评论 -
transtrn用法详解
transtrn函数: 替换掉子串例如:data _null_;string1='*'||transtrn('abcxabc', 'abc', trimn(' '))||'*';put str1=;string2='*'||transtrn('abcxabc', 'abc', ' ')||'*';put str2=;run;结果输出如下:str1=*x*原创 2017-09-20 22:57:17 · 776 阅读 · 0 评论 -
SAS导入文件和数据集用法举例
SAS导入数据1.外部文件(txt/excel等)导入到SAS例如:将c:\mydb\temp1.txt导入sas逻辑库(mydb)--写法1libname mydb 'c:\mydb';filename f1 'c:\mydb\temp1.txt'; /*f1表示文件逻辑名称 c:\mydb\temp1.txt 表示物理名称*/data mydb.student;原创 2017-09-19 22:52:41 · 24058 阅读 · 0 评论 -
input中的三种格式修饰符用法举例
input中的三种格式修饰符用法举例列表方式输入语句中的修饰符有3个:":","~","&"。下面分别介绍这3中修饰符的使用方法。":"。当原始数据是以空格为分隔符时,要想对变量值长度不一致的变量规定统一长度必须使用该格式修饰符。e.g:空格为分隔符时,对变量长度不一致的变量规定统一长度。data new;input Univ:$12. zip; cards;M原创 2017-09-19 22:54:33 · 2537 阅读 · 0 评论 -
by分组和class分组的区别
by分组和class分组的区别:SAS的文档里对这个问题有专门的描述,大概可以包括以下几点:1.区别不大一般可以互换2.用by之前必须先sort 而用class则不必3.在proc means 中如果不使用nway,用by则只会给出相应的分类的汇总统计数据; 而用class不仅会给出相应分类的统计数据而且还会给出不同组别所有可能组合的数据的统计数据;4.by的结果输出多个原创 2017-09-19 22:55:52 · 4158 阅读 · 0 评论 -
datalines与datalines4语句详解
datalines与datalines4语句详解datalines语句cards或datalines或lines 一样的,标志数据块的开始,单独占一行。该语句必须是数据步的最后一条语句。例如:data mydb.student;input id name $ sex $ score;cards;101 张三 男 98102 李四 男 87103 兰兰原创 2017-09-19 22:57:34 · 4104 阅读 · 0 评论 -
infile指令使用总结
infile指令使用总结1、firstobs和obs指令,firstobs用于指定读入数据的起始行;obs用于指定读入数据的终止行。如infile 'c:\temp.txt' firstobs=2 obs=100;2、flowover/missover/truncover/stopover指令,该指令都用于读取记录末尾不完整的数据时使用,flowover是默认选项。flow原创 2017-09-19 22:59:37 · 15863 阅读 · 0 评论 -
input、put、input() 、put()用法与区别
input、put、input() 、put()用法与区别:put()函数:把数值型或字符型变量转为字符型变量input()函数:将字符型变量转化为数值型变量input:读取变量put:在日志窗口显示变量的值日期转换:19SEP2017转换成2017-09-19 => put('19SEP2017',yymmdd10.)原创 2017-09-19 23:00:57 · 29156 阅读 · 0 评论 -
SAS中nodupkey和nodup的区别
SAS中nodupkey和nodup的区别1.nodupkey会把同by variable里变量有相同值的observation都删掉。这些observation包括那些与by variable里变量有相同值,但与剩下变量有不同值的observation。如:input id1 $ id2 $ extra ;cards;aa ab 3aa ab 3aa ab 2原创 2017-09-19 23:03:41 · 25583 阅读 · 0 评论 -
kupdate用法详解
kupdate函数: 删除、删除+添加 指定字符串例如:data _null_;x1=kupdate("123456",2,3);x2=kupdate("123456",2,3,"abcd");x3=kupdate("123456",2,3,"ab"); put x1= x2= x3=;run;结果输出如下:x1=156 x2=1abcd56 x3=1原创 2017-09-20 22:52:52 · 596 阅读 · 0 评论 -
SAS中取整函数(round、ceil、floor、int)用法详解
1.roundround(x,eps)求x按照eps指定的精度四舍五入后的结果.比如round(5654.5654,0.01)结果为5654.57,round(5654.5654,10)结果为5650。round 是截取函数按规定舍入精度取一个数的近似值的函数round;data;原创 2017-09-20 22:54:32 · 66647 阅读 · 2 评论 -
translate和ktranslate用法详解
translate函数:1.替换字符data _null_;a='xyvw';b='aabbabab';c=translate(a,'ab','vw');d=translate(a,'12','ab');put c= d=;run;输出结果如下:c=xyab d=11221212data _null_;A='8/14/2010';B=tr原创 2017-09-20 22:56:26 · 3049 阅读 · 0 评论 -
SAS中的两种数据记录格式
SAS中的两种数据记录格式为:A.固定长度记录:每条记录的长度相同,典型的长度为80列,例如----+----1----+----2----+----3----+----4----+----5----…………………………………………………………………………………………………………………………尽管每条记录中包含的域不同,但后面用空格转载 2017-09-22 00:08:09 · 789 阅读 · 1 评论