SAS新功能概览及应用王莉华
- 格式:pdf
- 大小:7.03 MB
- 文档页数:73


sas中nmiss用法SAS中NMISS用法在SAS中,NMISS函数是用来计算一组变量中缺失值的数量的函数。
它返回一个整数值,表示给定变量中的缺失观测数量。
以下是关于NMISS函数的一些常见用法和详细讲解:基本用法•NMISS(var1, var2, ...): 该用法可以计算多个变量中的缺失值数量。
只需将所需的变量作为函数的参数,用逗号分隔即可。
示例下面是一个示例数据集,包含了一些学生的成绩信息:data scores;input student_id grade1 grade2 grade3;datalines;1 88 . 922 . 75 823 90 . .4 81 85 795 . 92 .;run;我们将使用NMISS函数来计算每个学生的成绩缺失值数量。
data missing_count;set scores;missing_count = NMISS(grade1, grade2, grade3); run;上述代码将计算每个观测中成绩变量的缺失值数量,并将结果存储在新创建的missing_count变量中。
进一步操作我们可以在使用NMISS函数时进行进一步的操作,例如:•使用NMISS函数进行条件筛选•将NMISS函数与其他函数结合使用使用NMISS函数进行条件筛选我们可以使用NMISS函数对数据集的特定观测进行筛选。
例如,我们可以使用NMISS函数找出缺失值数量大于等于2的观测。
data missing_count;set scores;where NMISS(grade1, grade2, grade3) >= 2;run;上述代码将保留缺失值数量大于等于2的观测,将结果存储在新的数据集missing_count中。
将NMISS函数与其他函数结合使用我们可以将NMISS函数与其他函数结合使用,以获得更多有用的信息。
例如,我们可以使用NMISS函数计算每个观测中缺失值的百分比。
sas宏(1)、系统宏变量、⾃定义宏变量、输出宏变量值、宏与text结合SAS macro variables 1. enable you to substitute text in your SAS programs(替代作⽤,和c++的 #define 差不多) 2. When you reference a macro variable in a SAS program, SAS replaces the reference with the text value that has been assigned to that macro variable. By substituting text into programs, SAS macro variables make your programs more reusable and dynamic 3. 判断宏变量定义的结束是以分号为分隔符。
为什么要使⽤宏变量?因为,宏能起到⼀处替换,多处替换的效果!宏变量储存在哪?The value of a macro variable is stored in a symbol table。
The values of automatic macro variables are always stored in the global symbol table(意味着你总可以引⽤到这些宏)The values of user-defined macro variables can reside either in a macro symbol table local or in the global symbol table.(⾃定义的宏变量⼤部分也储存到全局符号表中)宏变量的使⽤范围有多⼤?除了datalines步,其他任何地⽅都可以使⽤!如何删除宏?%symdel mvariable;1:宏变量如何使⽤宏变量?使⽤引号符号(&)对宏进⾏引⽤,当sas程序遇到&时,会在symbol table中搜寻同名变量,进⽽得出变量中的值。
sas运算符特殊用法在SAS编程中,运算符是一种用于执行特定操作的特殊字符。
SAS提供了许多运算符,包括算术运算符、逻辑运算符和比较运算符。
除了这些常见的运算符外,SAS还提供了一些特殊用法的运算符,本文将介绍一些常见的SAS运算符特殊用法。
1. CAT运算符CAT运算符用于连接字符串,并创建一个新的字符串变量。
它的语法如下:new_var = CAT(var1, var2, var3);其中var1、var2和var3是要连接的字符串变量。
CAT运算符会将这些变量连接成一个新的字符串赋值给new_var。
例如,假设var1="Hello"、var2="SAS"和var3="World",那么使用CAT运算符后,new_var的值将为"HelloSASWorld"。
2. COMBINE运算符COMBINE运算符用于合并两个或多个数据集,并创建一个新的数据集。
它的语法如下:new_dataset = dataset1 COMBINE dataset2;其中dataset1和dataset2是要合并的数据集。
COMBINE运算符会将两个数据集按行合并,创建一个包含两个数据集所有观测值的新数据集new_dataset。
3. IFN函数IFN函数是一种条件函数,用于根据条件进行数值转换。
它的语法如下:new_var = IFN(condition, value1, value2);其中condition是一个逻辑条件表达式,value1和value2是要进行转换的值。
如果条件为真,函数返回value1;否则返回value2。
例如,假设有一个变量age,如果age大于等于18,那么就将新变量new_var设置为1,否则设置为0,可以使用IFN函数实现:new_var = IFN(age >= 18, 1, 0);4. INDEX和SUBSTR函数INDEX函数用于返回字符串中第一次出现某个子字符串的位置。
应用SAS中的SQL语句进行数据合并1 连接joins分为内连接inner joins和外连接outer joins内连接:仅返回匹配的数据,最多可以有32个表同时进行内连接外连接:返回所有匹配的数据和非匹配的数据,一次只能有两个表或视图进行外连接迪卡尔积:返回表内所有可能的匹配情况。
例如表A有10*20的数据,表B有30*40的数据,则两个表的迪卡尔积有(10+30)*(20+40)=40*60的数据我们先建立两个数据集:data march;input flight $3. +5 date date7. +3 depart time5. +2 orig $3.+3 dest $3. +7 miles +6 boarded +6 capacity;format date date7. depart time5.;informat date date7. depart time5.;cards;219 01MAR94 9:31 LGA LON 3442 198 250622 01MAR94 12:19 LGA FRA 3857 207 250132 01MAR94 15:35 LGA YYZ 366 115 178271 01MAR94 13:17 LGA PAR 3635 138 250302 01MAR94 20:22 LGA WAS 229 105 180114 02MAR94 7:10 LGA LAX 2475 119 210202 02MAR94 10:43 LGA ORD 740 120 210219 02MAR94 9:31 LGA LON 3442 147 250132 02MAR94 15:35 LGA YYZ 366 106 178202 03MAR94 10:43 LGA ORD 740 118 210219 03MAR94 9:31 LGA LON 3442 197 250622 03MAR94 12:19 LGA FRA 3857 180 250271 03MAR94 13:17 LGA PAR 3635 147 250202 04MAR94 10:43 LGA ORD 740 148 210219 04MAR94 9:31 LGA LON 3442 232 250622 04MAR94 12:19 LGA FRA 3857 137 250132 04MAR94 15:35 LGA YYZ 366 117 178271 04MAR94 13:17 LGA PAR 3635 146 250302 04MAR94 20:22 LGA WAS 229 115 180114 05MAR94 7:10 LGA LAX 2475 117 210202 05MAR94 10:43 LGA ORD 740 104 210219 05MAR94 9:31 LGA LON 3442 160 250622 05MAR94 12:19 LGA FRA 3857 185 250132 05MAR94 15:35 LGA YYZ 366 157 178271 05MAR94 13:17 LGA PAR 3635 177 250114 06MAR94 7:10 LGA LAX 2475 128 210202 06MAR94 10:43 LGA ORD 740 115 210219 06MAR94 9:31 LGA LON 3442 163 250132 06MAR94 15:35 LGA YYZ 366 150 178302 06MAR94 20:22 LGA WAS 229 66 180114 07MAR94 7:10 LGA LAX 2475 160 210132 07MAR94 15:35 LGA YYZ 366 164 178271 07MAR94 13:17 LGA PAR 3635 155 250302 07MAR94 20:22 LGA WAS 229 135 180;run;data delay;input flight $3. +5 date date7. +2 orig $3. +3 dest $3. +3delaycat $15. +2 destype $15. +8 delay;informat date date7.;format date date7.;cards;114 01MAR94 LGA LAX 1-10 Minutes Domestic 8 202 01MAR94 LGA ORD No Delay Domestic -5 622 01MAR94 LGA FRA No Delay International -5 132 01MAR94 LGA YYZ 11+ Minutes International 14 302 01MAR94 LGA WAS No Delay Domestic -2 114 02MAR94 LGA LAX No Delay Domestic 0 202 02MAR94 LGA ORD 1-10 Minutes Domestic 5 219 02MAR94 LGA LON 11+ Minutes International 18 622 02MAR94 LGA FRA No Delay International 0 132 02MAR94 LGA YYZ 1-10 Minutes International 5 271 02MAR94 LGA PAR 1-10 Minutes International 4 302 02MAR94 LGA WAS No Delay Domestic 0 114 03MAR94 LGA LAX No Delay Domestic -1 202 03MAR94 LGA ORD No Delay Domestic -1 219 03MAR94 LGA LON 1-10 Minutes International 4 622 03MAR94 LGA FRA No Delay International -2 132 03MAR94 LGA YYZ 1-10 Minutes International 6 271 03MAR94 LGA PAR 1-10 Minutes International 2 302 03MAR94 LGA WAS 1-10 Minutes Domestic 5 114 05MAR94 LGA LAX No Delay Domestic -2 202 06MAR94 LGA ORD No Delay Domestic -3 219 06MAR94 LGA LON 11+ Minutes International 27 132 06MAR94 LGA YYZ 1-10 Minutes International 7 302 06MAR94 LGA WAS 1-10 Minutes Domestic 1 622 07MAR94 LGA FRA 11+ Minutes International 21 132 07MAR94 LGA YYZ No Delay International -2 271 07MAR94 LGA PAR 1-10 Minutes International 4 302 07MAR94 LGA WAS No Delay Domestic 0 ;run;1.1 内连接proc sql;create table innerjoins asselect a.*,b.*from March a,Delay bwhere a.flight=b.flight and a.date=b.date;quit;1.2 外连接1.2.1 左连接left joinproc sql;create table leftjoins asselect *from March aleft join Delay bon a.flight=b.flight and a.date=b.date;quit;1.2.2 右连接right joinproc sql;create table rightjoins asselect *from March aright join Delay bon a.flight=b.flight and a.date=b.date;quit;1.2.3 全连接full joinproc sql;create table fulljoins asselect *from March afull join Delay bon a.flight=b.flight and a.date=b.date;quit;1.3 迪卡尔积proc sql;create table cartesian asselect a.*,b.*from March a,Delay b;quit;这里再大概说明一下内外连接的实现的基本原理:首先生成两个数据表的迪卡尔积,然后再根据where语句来选择符合条件的数据作为输出结果。