SAS成长之路——数据集、变量、观测值的操作
一、数据集的操作
1、SET语句
用于从一个或多个已存在的数据集中读取数据,生成新的数据集
基本语句格式:
set 数据集名 <选项> ;
选项列表:
选项 | 说明 |
---|---|
keep=变量名 | 规定读入数据集时要保留的变量 |
drop=变量名 | 规定读入数据集时要删除的变量 |
renam=(原始变量名=新变量名) | 规定新变量的名称 |
where=(表达式) | 从数据集中选择读入满足表达式的观测 |
firstobs=n | 规定从数据集中的第n行开始读入观测 |
obs=m | 规定到数据集中的的m行结束读入观测 |
2、BY语句
在数据步中,规定分组变量;经常与set、merge、update和modify语句等联合使用。
基本格式:
by <descending> 变量名 ;
用sort过程对数据集进行排序:
proc sort data=数据集名 ;
by <descending> 变量名 ;
run ;
默认变量按升序排列
3、数据集的串接
3.1、简单串接
将所有要合并的数据集简单地纵向叠加在一起,新生成的数据集包含所有数据集中的变量,如果原来某个数据集中没有此变量的观测,则认为是缺失值;
基本格式:
data 新数据集名 ;
set 数据集名1 数据集名2 ;
run ;
3.2、排序串接
数据集中的观测按照一定的顺序进行串接
基本格式:
data 新数据集名 ;
set 数据集名1 数据集名2 ;
by 变量名 ;
run ;
4、数据集的并接
4.1、简单并接
将多个数据集中的观测值逐个横向合并在一起;即将一个数据集中的第一个观测值与另外一个数据集中的第一个观测值合并
基本格式:
data 新数据集名 ;
merge 数据集名1 数据集名2 ;
run ;
4.2、匹配并接
把两个或两个以上的数据集按照某些变量的值进行并接
基本格式:
data 新数据集名 ;
merge 数据集名1 数据集名2 ;
by 变量名 ;
run ;
二、变量的控制
1、规定变量的长度
基本格式:
length 变量名 <$> n ;
2、对变量加标签
基本格式:
label 变量名 = '标签' ;
3、对变量重命名
基本格式:
rename 原变量名 = 新变量名 ;
4、变量的选择和删除
选择保留的基本格式:
keep 变量名列表 ;
删除变量的基本格式:
drop 变量名列表 ;
三、观测值的管理
1、观测数据的选择
基本格式:
where 表达式 ;
表达式为选择观测的条件,由一系列变量、常数和运算符组成(不包括函数);
where语句本身不执行任何操作,一般要和其他语句连用,如set、merge、update和modify语句等
仅用于where语句的特殊运算符
运算符 | 说明 |
---|---|
between···and | 选择一定数值范围内的观测 |
is missing\is null | 选择变量值为缺失值的所有观测 |
contains | 选择包含规定字符串的观测 |
like | 选择规定模式的观测,用"-"和"%"表示缺省的部分 |
same···and | 增加where语句的从句 |
2、观测值的删除
基本格式:
if 表达式 then delete ;
3、观测值的修改
3.1、update语句
基本格式:
data 新数据集名;
update 原数据集名 <选项> 更新数据集名 <选项>;
by 变量名 ; /*by语句定义的分组变量是原数据集和新数据集共有的变量*/
run ;
更新数据集包含了要对原数据集进行修改的数据值,不需要修改的数据则用缺失值表示;更新数据集中还可以包含一些新变量以增加到新数据集中去。
3.2、modify语句
基本格式:
data 原数据集名 ;
modify 原数据集名 更新数据集名 ;
by 变量名 ; /*by语句定义的分组变量是原数据集和新数据集共有的变量*/
run ;
更新数据集可以添加新的观测到原数据集中,但不可以增加新的变量
网友评论