sas语句

/修改结果变量长度/
proc sql;
alter table a
modify
x char(3),
y num(5);
quit;注:只能改变已经客观存在的字符型变量的长度,对数值型变量无效

1、input语句:
input (g1-g5) (37.2 , 25.2);
input (a b) ( , 5.)
@@-无需分行而按变量连贯读数据

几个特殊符号的用法(: & ~):
读值时第一次遇到分隔符、或是数据行末尾、或是读满列数而结束
& 字符型输入值可以嵌有一个或几个空格
~ 字符型输入值保留引号(与infile 语句中选项dsd一起使用才有效)

Cards语句与datalines语句可以通用
如果输入数据中含有分号,可用cards4语句或datalines4语句,同时,数据结尾用4个分号表示数据输入结束

2、Put 语句
Put语句负责在log窗口输出一些结果,file print选项可把输出转移到output窗口
Put infile (输出最新的数据行到SAS log 窗口)
Put all (输出所有变量的值)
Put page (输出新页)

3、Set语句
使用set语句复制数据集
Point选项指明要读入的记录序号�set 数据集 point=指针变量;�可用于抽样,一般与output语句连用
Nobs选项创建一个临时变量用来存储数据集的观测总数

Set语句可以串接多个数据集,形式如下
Data 数据集;
set 数据集A 数据集B ……;

Run;

4、Update 语句
Update语句用一个升级数据集中的观测来修改一个主数据集。
Update语句一定要与BY语句一起使用,BY语句给出了合并观测时共同变量的名字
主数据集中的共同变量必须是单值的,即不能有两个或两个以上的观测其共同变量值相同

5、Infile语句
Delimiter (DLM)选项:规定一个字符替代空格作为分隔符。
Firstobs选项 :不是从文件的第一个记录开始,而是从指定行开始读取记录
Obs选项:规定用户想从输入文件中连续读取的最后一个记录号
例如:
data new1;
infile cards delimiter=',';
input x y z;
cards;
1,2,3
4,5,6
;
data new2;
infile cards dlm='ab';/ab任何组合都可以作为数据分隔符/
input x y z;
cards;
1aa2ab3
4bb5ba6
7a8b9
;
run;
proc print data=new1;
run;
proc print data=new2;
run;

DSD选项:
1、使最外层引号括起的内容当成整个字符串输入,并去除最外层引号
2、默认分隔符为逗号
3、两个相邻的分隔符意味着前一个分隔符后的字段为缺失值
Infile语句
当行末尾数据宽度少于规定宽度时
Flowover: 默认选项,将下一条记录读入
Missover:将变量置为缺失
Truncover:将数据直接读入,不管宽度是否少于规定宽度
Stopover:系统终止数据步执行,报告出错
Lrecl=n选项:设定源数据文件行的物理长度,缺省为256,最大可设为32767
Pad | Nopad选项:pad选项指当宽度少于规定宽度时,在后面填充空格至Lrecl=n规定的行长度,缺省为nopad

6.retain语句(不是一个可执行语句)
可改变数据集变量顺序
例:data A;
input a b c;
cards;
1 2 3
2 3 4
3 4 5
;
run;
data aa;
retain c b a;
set A;
run;

7.array数组


sas语句_第1张图片
image.png

一、数值型数组
定义数值型数组的格式为:
ARRAY 数组名(维数说明) 数组元素名列表(初始值表);
例如:
ARRAY tests(3) math chinese english (0, 0, 0);

定义二维数值型数组,只要在维数说明中指定用逗号分开的两个下标界说明,例如:
array table(2,2) x11 x12 x21 x22;

二、字符型数组
说明数组元素类型为字符型,并且说明每一元素所能存储的字符串的最大长度。说明格式如下: ARRAY 数组名(维数说明) 元素长度说明 数组元素名列表 (初始值表);
例如:
ARRAY names(3) $ 10 child father mother;

你可能感兴趣的:(sas语句)