sas数据整理(professional)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 数据步开始,定义要建立的数据集为work 库的temp
• 循环开始,控制变量为class,取值从1到2
• 要输入的变量为x和y,并且采用数据连续 读入方式 • 用output语句将循环控制变量写入数据集中 • 循环结束 • 数据块开始
• end;
• cards;
• 34 56 78 90 35 67 • 数据块 89 10 23 65 77 45 • ; • run;
1、常用过程步
程序步名 PRINT SORT CHART GCHART 功能 将数据集中的数据列表输出 将指定的数据集按指定变量排序 绘出低分辨率的统计图 绘统计图
FREQ UNIVARIATE
• 数据块结束 • 程序结束,开始运行以上程序
(2)当型while循环语句
• 语法格式:
do while 循环继续条件;
循环体语句;
end;
• 先判断“循环继续条件”是否成立,成立时执行
“循环体语句”。
(3)直到型until循环语句
• 语法格式:
do until 循环退出条件;
循环体语句;
INPUT语句格式化输入
日期的格式化输入。 • input date yymmdd8. sales; • format yymmdd10. ; • input sales date : yymmdd8.; • format yymmdd10. ; 1、日期在前 读入8位 输出10位
2、日期在后
4、变量属性与ATTRIB语句
Select 示例1
• input month $1-10 season $; • • • • • • select(month); when('February','March','April') season='Spring'; when('May','June','July') season='Summer'; when('August','September','October') season='Autumn'; otherwise season='Winter'; end;
DATA Step 数据步
PROC Step
程序步
语法的基本规则
• 一般以data或proc开头,以run结尾;
• 以 ; 分割语句,以/*注释内容*/添加注释;
• 一个语句可写多行,一行也可写多个语句; • 允许一个空格的地方可以用多个空格; • 变量变换及运算在Data步完成,具体如下: input 变量名;New_various=公式;cards;
if…then do…end句型
• 如果then后要执行多个指令,则使用:
if 表达式 then do; 语句1; 语句1; ……; end;
(2)Select语句
• 语法格式之一: select (选择表达式) ; when(值列表) 语句; when(值列表) 语句; ……; otherwise 语句; end; • 语法格式之二: select ; when(条件) 语句; when(条件) 语句; ……; otherwise 语句; end;
ATTRIB语句示例
data class.format; attrib name label="姓名" length=$10 date label="日期" format=yymmdd10. informat=mmddyy10. amount label="金额" format=10.2; input name $ 1-10 date amount;
• 字符型或数值型:由$区别。 • 变量标签(label):不超过40个字符或20个汉字。 • 变量存储长度(length):默认8字节。 • 变量的输入格式(informat):如何转化外部数据。 • 变量的输出格式(format):如何显示。 Attrib语句格式:attrib 变量名 属性 变量名 属性 …… ;
• 数据每一行为一个观测,各观测值之间有一个或 几个空格或制表符分隔;
• 无论是数值型还是字符型缺失数据必须用小数点 表示;
• 字符型数据长度不能超过8个字符,不允许完全空 格或中间有空格,开头和结尾的空格忽略; • 在input语句中必须列出观测中的每一项数据对应 的变量名而不能省略中间某一个。
INPUT语句列格式要求
7、CARDS语句
• 主要功能:用于直接输入数据,标志着数据块的 开始。 • 格式如下: cards; 1 2 3 ; • cards = datalines
8、其它语句
• output 语句:将所读入的数据存放在缓存中,也
可用其强制输出一条新记录
• set 语句:对数据集中的数据进行编辑,也可将
end;
• 先执行“循环体语句”,然后判断“循环退出条
件”是否成立,成立则结束循环。
三、过程步
SAS的程序步(也称过程或过程步)就是已经编
好了的用于数据整理和统计的计算机程序,你只需 要调用它们就是了。 程序步总是用一个PROC语句开始,后面紧跟着 程序步名,用以区分不同的程序步。 以下是一些常用的程序步的名称及功能:
cards;
张鹏 李志明 1/3/99 10/15/1998 2000 1500
王敏
;
11/5/99
3000
proc print noobs label; run;
5、赋值语句
赋值语句格式 变量名=表达式 • 例如: • avg=(math+chin)/2; • 通过已有变量计算得到新变量 说明 • data 语句中使用
• isfem=(sex=‘女’);
• y=sin(x);
• 赋0,1值
• newv=.;
• 赋缺失值
6、输出语句PUT
输出语句格式 说明 put 变量名 "字符串" ; • data 语句中使用,不能为数值和表 • 例如: • x=0.5;y=sin(x); 达式,结果在日志窗口输出。
• put "sin(" x ")=" y;
数据步流程说明
为什么可以这样写?在这里有必要解释一下数据
步的执行过程,input语句按变量顺序将数据读入内 存缓冲区,直至每一个变量都有值相对应。然后数 据步继续向下执行,从而其它语句可以修改内存缓 冲区,如修改值、增加变量等,在执行到数据步结 束后,程序又回到input语句处继续执行,直到数据 读完为止。
wk.baidu.com
例如:city in (‘北京’,’上海’,’天津’,’太原’)
• 此外还有一般的算术运算符+,-,*,/,**,以及 括弧,为避免搞错优先级可使用括弧。
一、数据步
• 数据步以DATA语句开
始,用于创建和处理 数据集。
ARRTIB语句
赋值语句 PUT语句 CARDS语句 OUTPUT语句 SET语句
注意:
1、没有结束语句;
程序块;
2、else语句可以省略;
3、可嵌套其它语句和循
else
程序块;
环结构。
示例
• data temp;
• 数据步开始,定义要建立的数据集为 work库的temp
• input x y@@;
• if x>50 then class=1;
• 要输入的变量为x和y,并且采用数据连续 读入方式
PUT语句的其它说明
输出语句格式 说明 put name $10; • 指定输出字符型变量的宽度; put name @; file print; • 不换行输出; • 在output窗口输出,put 语句前使用;
file ‘文件名’;
file “路径";
• 保存在当前工作环境目录下;
• 保存在指定目录下。
• 最常用的语句有:
DATA语句
INFILE语句
INPUT语句
数据步示例
data a; input x; /*字符+$,连续读入+@@*/ cards; 323 54 45 65 ; run; proc print; run;
1、DATA语句
• 主要功能:标志数据步的开始,命名将要创建
SAS 语言
——数据步、过程步 以及结构性语言介绍
目录
• 数据步
• 结构化语句介绍
基础知识:
• 程序一般结构
• 过程步
• 数据集的管理和引用
• 语法基本规则
• 常用符号表
• 全程语句
• 附录
程序的一般结构
data 库名.数据集名; input 变量名; cards; …… ; run; proc 过程名; 属性; var 变量; run;
• 建立新变量class,如果x>50,则 class=1 • 否则,class=2 • 数据块开始 • 数据块 • 数据块结束 • 列表输出数据集中的数据,检查有无错误 • 程序结束,开始运行以上程序
• else class=2;
• cards; • 34 56 78 90 35 67 89 10 23 65 77 45 • ; • proc print; • run;
• 程序颜色:过程名为加粗深蓝色,过程选项为浅蓝色,引
用为紫色,注释为绿色,关键字及变量名等皆为正常黑色。
运算符
比较运算符 = 等价表达 Eq 逻辑运算符 & 等价表达 And
^= >
< >= <= in
Ne Gt
Lt Ge Le
| ^
逻辑运算符 || a<>b
Or Not
连接字符串 Max(a,b)
指定数据集的内容复制到新建数据集中
二、结构化语句介绍
每一种结构化语言编写的程序都由顺序、分支、
循环三种结构构成, SAS语言也不例外。在这里简 要介绍一下分支和循环语句的语法。这些语句均可 直接在数据步和程序步中使用,适当地使用它们可 以大大简化我们的工作。
1、分支结构
(1) If语法格式:
if 条件 then
Select 示例2
• select; • • • • when(season='Spring') season1='春季'; when(season='Summer') season1='夏季'; when(season='Autumn') season1='秋季'; otherwise season1='冬季';
3、INPUT语句
• 用于向系统表明如何读入每一条记录。它的主要 功能有: – 读入由语句指定的数据列。 – 为相应的数据域定义变量名。 – 确定变量的读入模式。 • 格式: input 变量名 [变量类型 起止列数]...; • 字符变量+$,连续读入+@@ 。
INPUT语句自由格式要求
input 变量名; 称为自由格式。
的SAS数据集。
• 一般形式:
DATA 数据库标识.数据集名;
• 说明:如省略库标识名,则默认为work临时库
2、INFILE语句
• 主要功能:确定一个包含原始数据的外部文本 文件,并读入数据。 • 一般格式: infile “外部文件的所在位置及名称” 选项;
• 说明:必须出现在INPUT语句之前。
• put x= y=; put x y;
• “ x ” 中必须有空格,不然就把x当 做字符,原型输出。
• 输出x和y的值。
• put x 10-20 .6;
• 指定在10-20列输出,保留6位小数
PUT 语句示例
• • • • • • • • • data class.yunsuan; x=0.5; y=sin(x); put "sin(" x ")=" y; put x y; put x= y=; put x 10-20 .6 y 30-40 .6; put x 20.8 y 20.8; run;
• end; • 本语句还可以生成新的变量,如上season1。
2、循环语句
(1)计数do循环语句
• 该语句主要用于建立数据集。语法格式:
do 起始条件 to 终止条件 by 步长;
循环体语句;
end;
可使用leave跳出循环,使用continue结束本轮循环转入下一轮。
示例
• data temp; • do class = 1 to 2; • input x y@@; • output;
input 变量名 $ 1-10; 称为列格式。
• 数据行各列必须对齐,正确数出各列所占位数; • 字符型数据长度可以超过8个字符,中间可以有空 格,开头和结尾的空格忽略; • 指定位置为空白时视为缺失值;
• 可以只输入数据行中的某些而忽略其他项,例如 :对身份证号,可以分出年月日三个变量,即 input year 7-10 month 11-12 date 13-14;
• 循环开始,控制变量为class,取值从1到2
• 要输入的变量为x和y,并且采用数据连续 读入方式 • 用output语句将循环控制变量写入数据集中 • 循环结束 • 数据块开始
• end;
• cards;
• 34 56 78 90 35 67 • 数据块 89 10 23 65 77 45 • ; • run;
1、常用过程步
程序步名 PRINT SORT CHART GCHART 功能 将数据集中的数据列表输出 将指定的数据集按指定变量排序 绘出低分辨率的统计图 绘统计图
FREQ UNIVARIATE
• 数据块结束 • 程序结束,开始运行以上程序
(2)当型while循环语句
• 语法格式:
do while 循环继续条件;
循环体语句;
end;
• 先判断“循环继续条件”是否成立,成立时执行
“循环体语句”。
(3)直到型until循环语句
• 语法格式:
do until 循环退出条件;
循环体语句;
INPUT语句格式化输入
日期的格式化输入。 • input date yymmdd8. sales; • format yymmdd10. ; • input sales date : yymmdd8.; • format yymmdd10. ; 1、日期在前 读入8位 输出10位
2、日期在后
4、变量属性与ATTRIB语句
Select 示例1
• input month $1-10 season $; • • • • • • select(month); when('February','March','April') season='Spring'; when('May','June','July') season='Summer'; when('August','September','October') season='Autumn'; otherwise season='Winter'; end;
DATA Step 数据步
PROC Step
程序步
语法的基本规则
• 一般以data或proc开头,以run结尾;
• 以 ; 分割语句,以/*注释内容*/添加注释;
• 一个语句可写多行,一行也可写多个语句; • 允许一个空格的地方可以用多个空格; • 变量变换及运算在Data步完成,具体如下: input 变量名;New_various=公式;cards;
if…then do…end句型
• 如果then后要执行多个指令,则使用:
if 表达式 then do; 语句1; 语句1; ……; end;
(2)Select语句
• 语法格式之一: select (选择表达式) ; when(值列表) 语句; when(值列表) 语句; ……; otherwise 语句; end; • 语法格式之二: select ; when(条件) 语句; when(条件) 语句; ……; otherwise 语句; end;
ATTRIB语句示例
data class.format; attrib name label="姓名" length=$10 date label="日期" format=yymmdd10. informat=mmddyy10. amount label="金额" format=10.2; input name $ 1-10 date amount;
• 字符型或数值型:由$区别。 • 变量标签(label):不超过40个字符或20个汉字。 • 变量存储长度(length):默认8字节。 • 变量的输入格式(informat):如何转化外部数据。 • 变量的输出格式(format):如何显示。 Attrib语句格式:attrib 变量名 属性 变量名 属性 …… ;
• 数据每一行为一个观测,各观测值之间有一个或 几个空格或制表符分隔;
• 无论是数值型还是字符型缺失数据必须用小数点 表示;
• 字符型数据长度不能超过8个字符,不允许完全空 格或中间有空格,开头和结尾的空格忽略; • 在input语句中必须列出观测中的每一项数据对应 的变量名而不能省略中间某一个。
INPUT语句列格式要求
7、CARDS语句
• 主要功能:用于直接输入数据,标志着数据块的 开始。 • 格式如下: cards; 1 2 3 ; • cards = datalines
8、其它语句
• output 语句:将所读入的数据存放在缓存中,也
可用其强制输出一条新记录
• set 语句:对数据集中的数据进行编辑,也可将
end;
• 先执行“循环体语句”,然后判断“循环退出条
件”是否成立,成立则结束循环。
三、过程步
SAS的程序步(也称过程或过程步)就是已经编
好了的用于数据整理和统计的计算机程序,你只需 要调用它们就是了。 程序步总是用一个PROC语句开始,后面紧跟着 程序步名,用以区分不同的程序步。 以下是一些常用的程序步的名称及功能:
cards;
张鹏 李志明 1/3/99 10/15/1998 2000 1500
王敏
;
11/5/99
3000
proc print noobs label; run;
5、赋值语句
赋值语句格式 变量名=表达式 • 例如: • avg=(math+chin)/2; • 通过已有变量计算得到新变量 说明 • data 语句中使用
• isfem=(sex=‘女’);
• y=sin(x);
• 赋0,1值
• newv=.;
• 赋缺失值
6、输出语句PUT
输出语句格式 说明 put 变量名 "字符串" ; • data 语句中使用,不能为数值和表 • 例如: • x=0.5;y=sin(x); 达式,结果在日志窗口输出。
• put "sin(" x ")=" y;
数据步流程说明
为什么可以这样写?在这里有必要解释一下数据
步的执行过程,input语句按变量顺序将数据读入内 存缓冲区,直至每一个变量都有值相对应。然后数 据步继续向下执行,从而其它语句可以修改内存缓 冲区,如修改值、增加变量等,在执行到数据步结 束后,程序又回到input语句处继续执行,直到数据 读完为止。
wk.baidu.com
例如:city in (‘北京’,’上海’,’天津’,’太原’)
• 此外还有一般的算术运算符+,-,*,/,**,以及 括弧,为避免搞错优先级可使用括弧。
一、数据步
• 数据步以DATA语句开
始,用于创建和处理 数据集。
ARRTIB语句
赋值语句 PUT语句 CARDS语句 OUTPUT语句 SET语句
注意:
1、没有结束语句;
程序块;
2、else语句可以省略;
3、可嵌套其它语句和循
else
程序块;
环结构。
示例
• data temp;
• 数据步开始,定义要建立的数据集为 work库的temp
• input x y@@;
• if x>50 then class=1;
• 要输入的变量为x和y,并且采用数据连续 读入方式
PUT语句的其它说明
输出语句格式 说明 put name $10; • 指定输出字符型变量的宽度; put name @; file print; • 不换行输出; • 在output窗口输出,put 语句前使用;
file ‘文件名’;
file “路径";
• 保存在当前工作环境目录下;
• 保存在指定目录下。
• 最常用的语句有:
DATA语句
INFILE语句
INPUT语句
数据步示例
data a; input x; /*字符+$,连续读入+@@*/ cards; 323 54 45 65 ; run; proc print; run;
1、DATA语句
• 主要功能:标志数据步的开始,命名将要创建
SAS 语言
——数据步、过程步 以及结构性语言介绍
目录
• 数据步
• 结构化语句介绍
基础知识:
• 程序一般结构
• 过程步
• 数据集的管理和引用
• 语法基本规则
• 常用符号表
• 全程语句
• 附录
程序的一般结构
data 库名.数据集名; input 变量名; cards; …… ; run; proc 过程名; 属性; var 变量; run;
• 建立新变量class,如果x>50,则 class=1 • 否则,class=2 • 数据块开始 • 数据块 • 数据块结束 • 列表输出数据集中的数据,检查有无错误 • 程序结束,开始运行以上程序
• else class=2;
• cards; • 34 56 78 90 35 67 89 10 23 65 77 45 • ; • proc print; • run;
• 程序颜色:过程名为加粗深蓝色,过程选项为浅蓝色,引
用为紫色,注释为绿色,关键字及变量名等皆为正常黑色。
运算符
比较运算符 = 等价表达 Eq 逻辑运算符 & 等价表达 And
^= >
< >= <= in
Ne Gt
Lt Ge Le
| ^
逻辑运算符 || a<>b
Or Not
连接字符串 Max(a,b)
指定数据集的内容复制到新建数据集中
二、结构化语句介绍
每一种结构化语言编写的程序都由顺序、分支、
循环三种结构构成, SAS语言也不例外。在这里简 要介绍一下分支和循环语句的语法。这些语句均可 直接在数据步和程序步中使用,适当地使用它们可 以大大简化我们的工作。
1、分支结构
(1) If语法格式:
if 条件 then
Select 示例2
• select; • • • • when(season='Spring') season1='春季'; when(season='Summer') season1='夏季'; when(season='Autumn') season1='秋季'; otherwise season1='冬季';
3、INPUT语句
• 用于向系统表明如何读入每一条记录。它的主要 功能有: – 读入由语句指定的数据列。 – 为相应的数据域定义变量名。 – 确定变量的读入模式。 • 格式: input 变量名 [变量类型 起止列数]...; • 字符变量+$,连续读入+@@ 。
INPUT语句自由格式要求
input 变量名; 称为自由格式。
的SAS数据集。
• 一般形式:
DATA 数据库标识.数据集名;
• 说明:如省略库标识名,则默认为work临时库
2、INFILE语句
• 主要功能:确定一个包含原始数据的外部文本 文件,并读入数据。 • 一般格式: infile “外部文件的所在位置及名称” 选项;
• 说明:必须出现在INPUT语句之前。
• put x= y=; put x y;
• “ x ” 中必须有空格,不然就把x当 做字符,原型输出。
• 输出x和y的值。
• put x 10-20 .6;
• 指定在10-20列输出,保留6位小数
PUT 语句示例
• • • • • • • • • data class.yunsuan; x=0.5; y=sin(x); put "sin(" x ")=" y; put x y; put x= y=; put x 10-20 .6 y 30-40 .6; put x 20.8 y 20.8; run;
• end; • 本语句还可以生成新的变量,如上season1。
2、循环语句
(1)计数do循环语句
• 该语句主要用于建立数据集。语法格式:
do 起始条件 to 终止条件 by 步长;
循环体语句;
end;
可使用leave跳出循环,使用continue结束本轮循环转入下一轮。
示例
• data temp; • do class = 1 to 2; • input x y@@; • output;
input 变量名 $ 1-10; 称为列格式。
• 数据行各列必须对齐,正确数出各列所占位数; • 字符型数据长度可以超过8个字符,中间可以有空 格,开头和结尾的空格忽略; • 指定位置为空白时视为缺失值;
• 可以只输入数据行中的某些而忽略其他项,例如 :对身份证号,可以分出年月日三个变量,即 input year 7-10 month 11-12 date 13-14;