- 博客(34)
- 收藏
- 关注
原创 base SAS programming学习笔记(date和time格式)
格式如下:ddmmmyy hh:mm:ss.ss, ddmmmyy是日期格式,与DATEw.的格式相同,hh:mm:ss.ss与TIMEw相同,如果没有输入ss.ss,则会默认为0;DD表示日期,MMM表示月份,取英文字母的前三位,YY或者YYYY表示年份,也可以用空格、“/”、"-"连接,w表示包括连接符号的宽度。格式如下:hh:mm:ss.ss,hh表示小时,mm表示分钟,ss.ss是非必须存在项,表示秒和毫秒,如果没有写入ss.ss则会自动默认为0。格式如下:month-name dd,yyyy;
2024-08-15 11:33:27
752
原创 base SAS programming学习笔记(read raw files3)
list input 时在变量名后加&表示在数据中有1个空格时不会结束读取,实现读入空格,只有当连续两个空格时结束读入,因此在变量名后加&符,则该变量与其他变量间必须用两个空格分开;此处与formatted input 不一致的是:formatted必须设置宽度,commaw.d来指定读入的列数,次数只需要输入comma.来读入非标准数值,:表示遇到分隔符结束读入数据。LIST PUT的分隔符默认是空格,可以自定义输出外部文件的分隔符,在file语句中使用DLM="分隔符";比如QES1-QES3;
2024-07-19 15:51:38
1022
原创 base SAS programing学习笔记(read raw files2)
使用column input 不需要按从左到右的顺序读取外部文件的数值,可以是任意读取,也可以重复读取,如下所示,(先读入的是第21至第22列的数据);数值型变量w.d,w表示总宽度,d表示小数位数,如果没有设置d则小数位数保持如数值,为了小数位数全部读入进去w必须包括数值的总长度,如果长度不够,将截断小数位数;但值得注意的是尽管在INPUT 语句设置数值变量的宽度,但是SAS的存储仍然8字节的浮点数,与数值宽度无关;含有逗号的数值,则使用特定的形式如commaw.d(w和d含义同上);
2024-07-17 12:24:30
265
原创 base SAS programming学习笔记13(Array)
变量名取值可以变量名、也可以是“-”连接的变量名序列,也可以是_ALL_(所有变量),_NUMERIC_(所有数值变量),_CHARACTER_(所有字符变量)当读取一行数据放入PDV里面(程序向量),在这行数据里面对array里面的变量值循环做相同的处理。创建新变量,ame,变量名默认为array-name后接1,2,.....dimension;在变量名之后赋初值,初值和变量名一一对应,初值间用空格或逗号隔开,初值用括号括起来;后接 $ 表示字符型,默认长度为8,可以加上数值表示字符的长度。
2024-07-16 12:16:46
984
原创 base SAS programming学习笔记12(do loop)
当使用point来指定行数读取的时候,需要使用stop避免结束读入数据的指针而引起连续读入该行数据,由于STOP会停止执行DATA步则不会将PDV的数据输出至输出数据集,因此需要加上OUTPUT来输出数据,将OUTPUT放入循环中则每次循环的数据都输出,如果放至循环外则只有最后一行数据输出。在上述程序中earned由于链接的是“+”,因此值都是保留到下一行,到第12月份仍然在执行循环,该循环完毕后month增至13,此时终止循环,因此输出的month=13;所以do until循环至少循环一次;
2024-07-12 15:04:54
433
原创 base SAS programming学习笔记11(functions)
from是计算间隔的开始时间,to是计算间隔的结束时间。modifiers:非必须,修饰符,取值有"i" 查找中忽略大小写,如果不定义的话在要求精准匹配,取值为"t”用法同trim函数删除string和substring的结尾空格,可以同时使用多个修饰符 用一组引号引用起来即可。delimiters:分隔符,默认是空格,用引号引用,默认的分隔符有:空格,斜杠(/),括号,连字符(-),点值(.)和tab,用户自定义分隔符号默认的分隔符无用。n:是提取字符的长度,如果n缺失,则剩余的所有的字符都读取;
2024-07-11 16:37:07
822
原创 base SAS programming学习笔记10(combine data)
执行阶段:SAS会提前检查是否根据BY语句匹配,如果匹配,会放入对应的PDV里面,如果存在相同的变量名称,则来自于前面数据集变量值会决定该变量的类型、长度等,变量值则来源后面对数据集;b.新的数据集的观测数是以输入数据集最少观测数为准,数据集合并是以位置为前提,即第一行与第一行合并,因此读入最少数据集的结束读入数据标志就会停止执行DATA步导出数据集。(data-set1和data-set2可以是相同的数据集,可以添加多个set 语句来实现上述的一对一合并)set data-set1 data-set2;
2024-07-09 17:47:20
645
原创 2024-07-08 base SAS programming学习笔记10(read data)
DATA 步读入SAS数据集的逻辑与读入外部文件逻辑基本一致,但是SAS对于SET 语句读入的变量名(即SET 语句数据集中已有的变量)在PDV(数据向量)读入下一行数据前会保留上一行值到下一行;如上所示程序,会读入第5行数据,但是不会输出到OUTPUT,因为将PDV(数量向量)的数据输出到OUTPUT数据集需要在DATA步末尾才行,在上述程序中在DATA步结束时则使用STOP语句终止当前数据步执行,因此可以在STOP语句前加上OUTPUT语句来输出数据集;如下所示,只在FULL数据集中才会有观测。
2024-07-09 10:56:26
455
原创 2024-07-05 base SAS programming学习笔记9(variables)
由于SAS 每次都会执行IF THEN 语句,因此在对同一个变量进行操作时使用IF THEN ELSE IF THEN 语句来提高效率,避免重复使用IF-THEN 语句,在碰到TRUE的情况则会跳出该IF 语句。如果不存在select expression ,则会对每个when 语句判断TRUE或FALSE,SAS只会执行首次判断为TRUE的语句,一旦存在TRUE语句则跳出不对其他WHEN语句进行判断。在每次DO循环前检查是否满足WHILE的条件,只有满足WHILE的条件才继续循环,如果不满足则终止循环。
2024-07-05 15:51:51
654
原创 2024-07-04 base SAS programming学习笔记8(HTML)
可以使用PATH =选项来提前设置输出文件的路径,如果同时使用URL=NONE路径选项则避免在文件互相调用时添加PATH路径,如果同时使用URL="url location" 则是在文件互相调用时添加自定义路径";ODS HTML 创建FRAME 文件时使用链接,分别链接至BODY 文件和CONTENTS文件,链接名称分别是在BODY和CONTENTS中使用的文件名。值得注意的是:在FRAME含有链接至body和contents文件的链接,CONTENTS文件含有链接至BODY文件的链接。
2024-07-04 17:16:25
535
原创 2024-06-27 base SAS programming学习笔记7(Descriptive stats)
生成交叉表时会默认自动生成frequency,percent,rowpercent,column percent,因此可以使用nofreq、nopercent、norow、nocol来控制不生成某个统计量。statistic-keyword:需要计算的描述统计量名称.默认输出N,MEAN,STD,MIN,MAX,当用户自定义名称时,默认的描述统计量不输出。此处不设置VAR 语句会对数据集内的所有数值变量 计算N,MEAN,STD,MIN,MAX;如果不设置tables语句则对数据集内每个变量生成单向表;
2024-06-27 17:57:07
1106
原创 2024-06-26 base SAS programming 学习笔记6(proc report)
c) group: 用于制作汇总表(SUMMARY REPORT),如果变量名存在DISPLAY用途,则GROUP作用与ORDER用途一致,如果制作汇总表则变量用途必须为ACROSS,ANALYSIS,COMPUTED,GROUP.WIDTH=:表示列宽,默认能容纳所有数据FOMAT后内容,但是对于没有FOMRAT的字符变量,则宽度默认是字符宽度,数值变量默认宽度是9;(筛选待输出的变量,变量名与变量名之间用空格隔开)e)computed:不在数据集里面的变量,也不会添加至数据集,可以是数值也可以是字符,
2024-06-26 15:49:42
579
原创 2024-06-24 base SAS programming学习笔记5(format define)
Format使用前必须提前使用libname定义好存放FORMAT的目录的数据库,SAS会提前在该数据库内和WORK数据库内搜索FORMAT,如果需要删除提前定义好的格式可以使用PROC CATALOG实现。单独字符或数值,24 或“A”;字符范围如"A"-"M";一系列独立的字符或数字用","分隔,90,180,270或"B","D","F"a)format-name 是格式名称名称,不超过8位字符,不以“.”和数字结尾,字符型的格式集range1为字符需要加上format-name 前面加上$符号;
2024-06-24 17:57:38
490
原创 2024-06-20 base SAS programming学习笔记4(DATA logic)
b)程序执行:在该阶段SAS对读入每行数据创建数据向量(program data vector ),数据向量的初始值均为缺失,DATA 步每一次只读取一行记录,将该行添加至数据向量,在数据向量内执行DATA步语句,直至所哟行被读入完成;ERROR可以在编译过程中发生,识别语句的拼写错误,也可以在执行阶段发生,变量名、数据名、数据类型等发生错误,均是在执行阶段发生,如果是数据错误,则会在日志中生成数据向量(program vector data)的内容。PUT _ALL_ 把所有变量名和值都输出至日志;
2024-06-21 17:44:04
435
原创 2024-06-19 base SAS programming 学习笔记3(READ RAW FILES)
当DATA步直接读入数据,而非读取外面文件时使用datalines,datalines语句仅可在DATA步出现一次,出现在INPUT语句后,数据行前面,数据行以单独的分号";",则使用dataline4,且数据行的结束行用4个分号";先少量使用INFILE OBS=N 读取数据,查看日志(log)是否有错误,打印导入数据,无误去掉OBS=N 读入所有的数据,查看日志是否有错误。有必要时再打印所有导入的数据。可以提前用filename定义好地点或文件名fileref,如:infile tests;
2024-06-20 17:22:59
440
原创 2024-06-13 base SAS programming学习笔记2(PROC PRINT)
title和footnote是全局变量,因此一旦设置生成会一直保留,除非设置新的title和footnote,新的title<n> 和footnote<n>会覆盖title<n>和footnote<n>及以上的所有title和footnote;使用proc print 可以创建列表,proc print 还可以使用SUM variables对某列数据求和,(根据条件挑选行数,只支持一个where语句)split="*" 表示将标签里面的内容按*分行,如果存在*的话,*也可以替换成其他用户自定义的字符;
2024-06-19 16:58:18
503
原创 2024-06-12 base SAS programming学习笔记(LIBNAME)
如果用户提前分配了USER数据库,则调用数据集的时候只有一级即数据集名称(filename)时,SAS会自动补全USER数据库名在数据集名称前,以调用该数据库内的SAS数据集,不然SAS只会自动补齐WORK在SAS数据集前,如:WORK.DATA。libname libref "path" 定义数据库libref的方式,libref必须是不超过8个字节,以下划线_或字母开头,后接下划线、字母或数字。FORMDLIM="delimiting-characters" (在插入分页符,默认为空,自动分页)
2024-06-13 16:29:29
777
原创 2024-06-11 初级SAS学习笔记17(export data)
使用ODS导出数据集时使用ODS确定需要输出的目的文件,CSV或HTML,然后使用proc print 来打印需要导出的数据集实现数据集导出,在proc print 中可以使用missing 来实现数值缺失打印空缺而非点值".";用户还可以自定义分隔符,如果用户自定义分隔符,则不论用上述哪种文件名后缀或者哪种DBMS都可以实现,实现的文件分隔符以自定义的格式为准;所以我们通过提前给sheet命名,在多个proc export中使用同一个文件名,实现在一个excel文件内导出多个数据集至多个sheet。
2024-06-12 16:43:45
719
原创 2024-06-06 初级SAS学习笔记16(Statistics)
也可以使用下列分布修改。MEASURES 输出表示关联强度的指标,如person and spearman 相关系数,gamma,kendall's tau-b,Stuart's tau-c,Somer's D,lambda, odds ration(OR),risk ration,及其置信区间。CI=type 设置标准差的置信区间计算方法,默认是EQUAL,上下限置信区间宽度是相等的,另一个取值是UMPU和NONE,NONE表示不输出标准差的置信区间。
2024-06-07 17:41:24
1532
原创 2024-06-05 初级SAS学习笔记15(ODS GRAPH)
symbol= 数据点标记有circle,circlefilled,diamond,diamondfilled,plus,square,squarefilled,star,starfilled,triangle,trianglefilled。labelattrs=(attribute=value) 设置坐标轴标签形式,attribute包括color=,size=,style=,weight=;
2024-06-06 11:50:52
1368
原创 2024-06-04 初级SAS学习笔记14(ODS GRAPH)
在windows和linux操作系统,ODS graphics默认打开的,在批量模式或者其他操作系统下ODS graphics默认是关闭的,可以使用ODS GRAPHICS ON 来打开,则SAS 在proc 步进行数据分析时会输出相应的图形,如果不想SAS 输出图形,可以使用ODS GRAPHICS OFF来关闭。datalabel=variable-name 给每个条带加标签,如果设置了variable-name,则把标签为该变量的值,如果未设置则为自身变量值。
2024-06-04 17:56:42
1170
原创 2024-05-31 初级SAS学习笔记13(Macro)
通常我们使用SAS宏的话,SAS会先解码宏生成标准的SAScode,再编译这些SAScode最后执行;引号内的是宏变量名,value可以是变量名,SAS会将该变量的值赋给宏变量,也可以是用引号引用的常值,但我们在data步使用call symput 后却不能在该步使用新生成宏变量,因为只有该data步执行后才会生成宏变量;经过SAS解码后的标准SAS程度不会含有%IF等这些宏语句,这些宏语句的存在更多是为了区分执行哪些相应的SAS步;SAS解码宏的时候则会把宏变量用值代替;
2024-05-31 17:28:36
624
原创 2024-05-30 初级SAS学习笔记12(Macro)
SAS宏的执行逻辑是先将宏语句(macro statement) 传递给宏处理器(macro processor)对宏语句进行解码,生成标准的SAS程序(SAS code),然后SAS对解码后的SAS程序进行编译和执行。SAS宏包括两部分:宏名称和宏变量名,宏名称以%为前缀,宏变量名以&为前缀,宏变量名与标准的SAS变量类似,但是只含有一个值,且该值的储存形式的字符,变量名、数字、文本等都可以成为宏变量的值;宏变量有局部宏变量和全局宏变量,定义在宏内部的宏变量为局部宏变量,定义在宏外部的变量为全局宏变量;
2024-05-30 18:00:07
651
原创 2024-05-28 初级SAS学习笔记11(dataset)
FIRSR.VARIABLE 和LAST.VARIABLE 当存在by variable 语句时才存在可使用,在每个分组内当该变量的取值是第一次出现的观测标记1,其余标记0;或者末次出现标记1,其余标记0;值得注意的是,此处的IN=variable里面的variable是暂时的,且该variable的值只有0或1,1表示在新数据集里面存在该原始数据集的观测,0表示新数据集不存在该原始数据集的观测。_ERROR_ 表示每行观测是否存在错误,存在错误为取值为1,不存在错误取值为0。
2024-05-29 17:32:07
314
原创 2024-05-28 初级SAS学习笔记10(dataset)
DATA _NULL_默认不输出数据集,也可以在DATA 后面设置多个数据集名称,同时生成多个数据集,与IF ELSE 或者DO END、OUTPUT语句连用或者OUTPUT 语句单独使用,实现将不同的观测值输出不同的数据集内;SAS的选项多有系统选项(system options)、语句选项(Statement options)、数据集选项(data set options),系统选项在SAS启动时自动设置,对全局产生影响,也可以使用options 语句修改。(表示两个数据集都输出);
2024-05-29 16:10:27
395
原创 2024-05-24 初级SAS学习笔记9(dataset)
此段程序的运行逻辑是SAS只会读取summary-data-set的第一行,并把该行的所有数据一值保留(retain),直到正常读取完所有的original-data-set。数据集的横向合并使用merge语句,如果有共同的变量使用by variable语句,但尽量保证by 语句至少1个数据集内分组的每组观测值唯一,确保横向合并不出错;当使用set 语句纵向合并多个数据集的时候,如果每个数据集都按相同变量排序,则可以使用by语句合并,使合并的数据仍然是按by变量排序;
2024-05-24 12:24:53
1026
原创 2024-05-22 初级SAS学习笔记8(ODS)
在proc print步中可以在VAR 语句中使用style={style-attribue=value},此时value为提前定义的foemat.1)使用proc format 定义数据呈现的颜色,2)使用style = 针对数据修改格子颜色。GIF,JPEG,PNG图片。
2024-05-23 16:05:36
471
原创 2024-05-21 初级SAS学习笔记7(ODS)
在class、classlev和var语句后加入斜杠"/" 在使用style={ style attribute=value}选项,在classlev 出现的变量必须在class 中出现,如:classlev month/style={foreground=green};VAR variable-list/STYLE(location list)={style-attribute=value},若要对不同的变量设置不同样式,可以设置多个VAR 语句。
2024-05-22 16:06:09
524
原创 2024-05-20 初级SAS学习笔记6(ODS)
COLOR= 定义文字颜色,可以指定三原色或color名字,如果color的名字超过8个字符或者 包括空格或者含有特殊字符必须加引号,常用的基本颜色有: AQUA,BLACK, BLUE,FUCHSIA,GREEN,GRAY,LIME,MAROON,NAVY,OLIVE,
2024-05-21 12:21:34
746
原创 2024-05-15 初级SAS学习比较5(ODS)
SAS将proc 步产生的数据按照表格模板(table template)排列完成后生成输出对像(output project),然后将输出对象(output project)按照既定的样式模板(style template)调整完成最终创建输出目的,即完成了SAS的输出。SAS 会给每个输出对象命名,使用ods trace 语句找到输出对象的名称,使用by 语句将为每个分组创建一个输出对象,使用ods select或ods exclude语句 选定或删除对应的输出对象。(关闭listing 显示)
2024-05-15 16:17:34
846
原创 2024-05-14 初级SAS学习笔记4(proc report)
可以使用format 语句定义需要的分组与proc freq 、proc tabulate、proc means、proc report使用,输出结果使用format中指定的分组。(如果计算新变量需要使用既有数值变量进行数学运算,需提前定义该变量为分析变量并定义对应统计量,在此处将变量名与统计量名称用“.”连接。正如此处需要将利用每行的museums和camping的数值,也必须在define定义museums和camping为分析变量,并指定计算的统计量名称,noprint 选项说明不打印该变量。
2024-05-14 16:04:51
565
原创 2024-05-13 初级SAS学习笔记3(proc report)
在group,across,order 选项中不会输出变量的缺失值,如需要输入缺失值需在proc report 语句后加入missing ,如下:proc report nowindows missing;(location 有after或者before两个选项,在报表后面或者前面插入分段,或者在BY group 前面或者后面插入分段);基于上述格式,如果输出的变量含有字符类型变量,则一个观测值输出一行,结果与proc print 结果近似,但是没有obs列;display 变量中一个观测输出一行;
2024-05-13 16:06:33
836
原创 2024-05-11 初级SAS学习笔记2(proc tabulate)
但是如果需要修改作为标题的变量名称或者统计两名称,则可以使用变量名=“new name ”方式修改,引号内为空,则该标题行空缺,对于非class variable该row head为空该行会保留置空,对于class variable该行会删除,若想强制删除row header空缺的空缺行可以使用row=float.输入三个dimension分别表示page dimension,row dimension,column dimension;(table里面的变量必须来源于class 或var 变量list)
2024-05-11 17:17:46
577
原创 2024-05-09 初级SAS学习笔记1
by 语句或class 语句都会每一个组输出一个观测的统计量,OUTPUT 输出结果默认新增_TYPE_ 和_FREQ_两个变量,_TYPE_用以表示CLASS分组组合,各组会构成一类,_TYPE_=0是每类观测值总和,_FREQ_表示每组观测值数目。class variable list, 也是分组计算统计量,结果比前述更完整,且不虚在proc sort 里面排序;var variable list 定义计算统计量的数值变量名,如该语句缺失,SAS默认使用所有的数值变量计算。stddev求解标准误;
2024-05-10 17:10:28
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人