sas language training笔记第1章基本认识_第1页
sas language training笔记第1章基本认识_第2页
sas language training笔记第1章基本认识_第3页
sas language training笔记第1章基本认识_第4页
sas language training笔记第1章基本认识_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1SASSAS的安装,常见问题,中英文切换,运行方式 ctive/batchSasZH,EN,DBCS(DATABASECONNECTIONSERVER)数据挖掘SAS帮助,学术会议,推荐书籍,/Baidu,(经济编辑器/增强型编辑器(行号),Log/Output/Result窗口,资源管理器,菜单(结果),帮助(help帮助(helpdm):资源管理器上面文本框*/Base,Stat,快捷键(Ctrl+E),LogLog,LogcheckDM

dataerror;lengthx$200;z=.;y=z+NOTE变量xNOTE:值的生成是对值执行操作的结果 /*1:2:ctrl+Edm'log dm'odsresult dm'output 简写:dm'log;clear;odsresult;clear; procprinttolog="example.log"new;run; procprinttofile="example.lst"new;run; procprintdata=sashelp.class /*procprintto;procprinttoprint=print procprinttolog=log;分号,断行,缩进(TAB或者空格),其他(RUN语句,DATA步*;/**/,快捷键(CtrlCtrl+Shift+/是恢复),逻辑库的概念,命名规则(<=8字符),临时/永久,Libname/*临时/永久:work及未命名(默认分到work)为临时逻辑库,其余为永久,永久逻辑libnameclear都不libnametest /*如何存在???datatest.a; /*并输出到test.a*/setsashelp.class; libnametest 8libname语句:创建/删除逻辑库、导出数据(带变量值的libnameddatadata*永久数据集data *删除逻辑库libnamed libnamexlsdata 答案libnamexlsdataxls.tablename(dblabel=yes);setsashelp.class;procoptionsoption=obs;命名规则(<=32字符),变量,观测。32 /*未字符长度则按遇到的第一个字符串走2数据集的方式(编译,执行,PDV原理-一行一行读,chash跳出一行一行读 proccontentsdata=sashelp.class position查看变量顺序 procDATA步,PROC optionsnocenternodate /*不要日期等optionslinesize=64pagesize=15; optionsorientation=portrait; optionsprocoptions /*所有选项 /*report代码末尾常用匹配清理名称title1justify=lfont=1color=blue'test'; /*用helptitle查询,对齐,字体,颜色*/title2j=lf=1c=blue'test'; /*用title只能是空或者1-10*/变量的名称:rename变量的长度:length语句 (长度,数字默认为8,其他的尤其是字符需要部分占用长度)变量的:label语句变量值的:format语自定义格式:procformat自动变量:_all_,_numeric_,_character_/*变量的名称:rename语句变量的:label语rename的两种用法:法1:data 1 推法2:在data步里面rename datatest1(rename=( 1));setsashelp.class;renamelabelname=''; /*引号中间需要有空格,否则name就是’一个单引号*/labelname=""; /*引号中间需要有空格,否则name就是’一个单引号*/labelname=""; labelname=; /*空格无要求,是name,变量名显示,不是,不赋予的都是变量名*//*此处的label也可以换成formatdatemmddyydatalengthnew1$200; setsashelp.class;lengthnew2变量的长度:length/*WARNING:当前正处理的加引号的字符串比262个字符长。您可能有不平衡的引号。*/optionsnoquo enmax;/*去除WARNING的系统做法,不建议,不好check*/datalengthx$500;x= 33333663‘’(313301110变量值的:format语procvalueagelow /*到左的时候是大于等于;到右的时候-<是小于-是小于等于dataa;

/*有小于或者大于号说明开区间,注意最后一个才有分号,其他都没有分号setsashelp.class;formatageage.;dataa;setattrib_all_label=''/*_all_是所有变量,label全为空,必须有两个单引号/*取消所有的label 右击某一列的属 查 查看 选 查看procformat;value$ "男"="Male"/*单引号双引号都ok,一般用双引号$后面可以有空格也可以没有*/ "女"="Female"; /*$只能,在后面报错*/valueagelow-15="<=15" 15<-high=data set format $ age procdatasets modify attrib_all_ data set formatdatasetsashelp.class;/*agex,内容是Nnamex列里C,字符串类型*/deleteoutput语句(默认作用;重复;拆分数据集dataa;set setsashelp.class;setsashelp.class;/*obstotal9999dataififage=16then

/*都输出了total变量的9999,没有加output/*改了1212121,上面没加output才改的datatotal=9999;total=9999;ifage=16then

/*只是此处多了output,结束了,下面的代码失效/*没有成功改了dataa;ififage>14then

/*此处的total有,此语句的有效区间是出现的/*满足条件的outputdataabsetifage<14thenoutputifage>=14andage<=15thenoutputb;ifage>15thenoutputc;dataa(drop=height)b(keep=name c/*补充的语句在数据集名后setifage<14thenoutputifage>=14andage<=15thenoutputb;ifage>15thenoutputc;dataabsetifage<14thenoutput /*rename的第二种方式,报错ifage>=14andage<=15thenoutputb;ifage>15thenoutputc;dataabcsetifage>14thenoutput /*有total为值

/*此处的else导致的total只是不大于14的有total=9999elseif15>age>=13elseif15>age>=13thenoutputb;elseifage>12thenoutputc;elseoutputd;/*此处只有15.16.而且有total为值/*此处只有11.12.而且有total=9999值得结转:LOCF法datasetcall /*把age变量的内容做成值 计 data set data set put cmiss=cmiss(of putall nmiss=nmiss(ofdata set cmiss=cmiss(ofsum()data 值,所以建议用sum,输出. /*建议:sum能忽 值,输出1if语 where语if条件then语句1; if条件then语句1;else语句2; if子句;函数dataifx-y=0.001then dataifx-y-0.001>0.0000000000000000001then/*180z1,if不和浮点数同时出现dataset /*where后面注意写=号datasetififpdvwherepdv*/do =1to语句1; 语句2; 1开始ARRAYtest(3x1x2x30,0,0);ARRAYtest(3-8)x3-x8;ARRAYtest(*)x3-ARRAYtest(2,2)x11x12x21ARRAYtest(2)$10x1x2ARRAYtest(3)_temporary_DATA步中保留上一步得到的值。LBOUND(),HBOUND()lowhigh3setdatax=x=1;y=2;str='a';output;x=3; x=5; x=1;x=1;z=22;str='ab';output;x=3; x=5; dataab;lengthstr setab;setoka为准(iflength长度的话 横向匹配合并先纵向拆分,再横向匹配合并,再纵向合并/*merge的东西越简单越好,其他语句莫插/*return的东西也是越简单越好,其他语句莫插,PDV原理保存上次的值,避免return在if时出错,多用data*//*by排序默认升序 ='F';='M';='F';x=1;x=1;y=66;output;x=2;y=75;output;x=5;y=89;procsortd;byx;procsortdata=d;byx; merge ) by if *if *if &ind; *if(not )& *if &(notind); *ifnot &ind); *if |ind;datax=x=1;y=66;z=56;output;x=1;y=76;z=99;output;x=2;y=75;z=78;output;x=5;y=89;z=78;output;procsortd;byx;procsortdata=e;byx; merge ) bydatad;x=x=1;y=66;output;x=2;y=75; x=1;y=76;z=99; x=5;y=89;x=1;y=33;x=1;y=33;z=56;output;x=3;y=68;z=78;output;x=5;y=69;z=78;procsortdata=d;byx;procsortdata=e;byx;data merged(in=ind) by输出:in=变量名:在数据进行mergekeep=,drop=,rename=(),firstobs=,datatest1(rename=(age=age1) setdatatest2(rename=(age=age1) setkeep、dropdatatest3 set rename dropdatatest4 set rename dropdatatest5 set renameby语句proc步中,例如procsort在data步中,与first/last/*first/last*//*by排序默认升序data setprocsortdata=f;byagename;datatest6(keep=age set byage retainn iffirst.agethendo;/*分组用,是不是组的第一个,是的话是1,不是是0,1的情况下 n= sum= else n=n+ sum=sum+ iflast.agethen mean= retain改变变量顺序:与length保留上一次执行data步时的值:与if语句等连用,实现libnameraw"C:\Users\ZHENG.BO\Desktop\SASLanguageTraining_2015-12\2015-12-练习procsortdata=raw.locfout=test7;bysubjidvisit;data set bysubjid retain iffirst.subjidthen ifvar1ne.thentmp=var1;elsevar1= *drop data x= y= lengthstr1-str4 *自动转换 z=1+ str1= *方法一 str2=1|| =y+ *方法二 str3= yyy= *日期 str4= datenum= formatdatenumdatadatax=y=z=1+ =y+yyy=法datadatax=y= lengthstr1-str4$200;str1=strip(x); str2=1||str3=data lengthstr4 str4= datenum= formatdatenum4/*/*变量几乎都是字符型,数学函数几乎都不考 值1SUM():参数不同书写格式,值问 /*ROUND(x,eps):返回x按照eps指定的精度四舍五入后的结果/*格式同上四舍五入,精度要求CEIL(x):返回大于等于x 向上当x为整数时就是 向上FLOOR(x):返回小于等于x当x为整数时就是x本身,否则为x左边最近的整 INT(x):返回x扔掉小数部分后的结 *函数的参数datax1x1=x2=x3= test1 test2sum(ofx1- test3sum(x1--x3)/*两者求和,结果是4,--直接跳转忽略中间因为没有of所有 test4sum(ofx1--x3);/*三者求和,结果是6,因为of所有*数学函数data mean= =4=1n=4=0===============2 mdy(month,day,intck('interval<Multiple><.shift>',start-value,end-data /*月份必须英文三位,其他报错 formatydata y='01Jan2006 formatydatatest3;datetime1 /*输出系统当前时间 date1datepart(datetime1)*取日期:15JAN2016 time1=timepart(datetime1);/*取时间 formatdatetime1datetime19.date1yymmdd10.time1year=/*month=/*1day=/* mdy formatmdy hourhour=min=取小时取分钟 sec 取秒 * intck1 diffyear 3 datatest1; 结果: datatest1; 输出结果:cddata 输出结果:cdefghijklmn data cat函数拼接函数trimstripcattcatt去掉每个的末尾空格t=trimcats前后空格都 catx第一个是拼接的符号,连接每一个后面的字符串,忽略前后的空格likedata ','efgh22data ','efgh22data ','efgh22datax=catx('-','efgh left,right函数data 结果 data 结果 datax1=scan'abc-def-gh',2 从第2个-前面的东西和前一个-x2scan('sfs42df34sdg',1,'1234567890') data x6=compress('aaabbb x7=compress('aaabbb bbbreverse函数反转输出:4apropcase函数HkkSssdatax2=propcase('HKKsssFY');注意:set字符长度、字符串长度length关于函数,请参阅《SASFunctionsbyExample5procdata setPROCEXPORTDATA OUTFILE= CEL /*文件/导入数据导完需要检查,excel中有空白的地方删除掉各种格式,要不会有多余空行列PROCIMPORTOUT= DATAFILE= CEL /*地址的名字是英文,且不要有空格procproc/*noobsby的用法,bysortdata set by procsortdata=a; by procprocprintdata=a by procdmlogprocdatasetslib=worknolistprocprinttoprint=print;run;procprinttolog=log;run;procprinttolog="a.lognew;/*new覆盖旧的,没有路径就是默认的当前打开路径procprocprocsortdata=aout=cnodupkey/*sort最好out,不动原数据保护文件by proclibnamerawprocsortdata=raw.locf bysubjidprocproctransposedata=aout=cprefix=Visit;bysubjid;var/*表当中显示的内容procprocdata setdata setproccomparebase=a1procproc procprocodsoutputprocmeansdata=a1; varage;procprocfreq *agenocol 统计量以及Podstraceodsoutputprocunivariate(正态procttest,(tprocglm,(方差分析procnpar1way*(秩和检验关于常见过程步,请参阅《BaseSAS®9.2ProceduresGuide6SQL1、PROCordergroupprocsql *常见操作 createtabletest1asselect*from createtabletest2asselect*fromsashelp.classwhere createtabletest3asselect*fromsashelp.classorderby createtabletest4asselect ,mean(age)asmean_agefrom; createtabletest5asselect*fromsashelp.classgroupbyagehaving createtabletest6asselect fromsashelp.class;数据字典 createtabletest7asselect*fromdictionary.columnswherelibname="SASHELP"andmemname="CLASS"; selectcount(*)into:totalfrom selectnameinto:namesseparatedby"-"fr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论