SAS变量的输入格式
.
SAS 变量的输入格式
SAS变量的只有 数据型 和 字符型,
输入格式:
input 变量1 输入格式1 变量2 输入格式2 ..... ;
1.1 数据型变量输入格式:
- 主要格式是 w.d w表示数字的总位数或宽度(包括小数点),d 表示小数部分的位数。 如,6.3
总位数是6,6中包括小数点,有 3 个小数 ; 4. 没有小数 总位数4,注意 没有小数也要把点号加上。
data fh;
input x 4.2; /* 变量x 4.2 代表 宽度为4, 小数点2位 */
cards;
12
2.1
15.65
;
proc print; /* 读入数据显示在输出窗口 */
run;
出现结果是不是跟想的不一样?
- 观测1 的结果,是因为 SAS系统 规则,定义时每个系统要有2位小数,所以必须有2位小数,没有小数点就自动把整数降为小数。例如 12.0 读成12.00,12 读成 0.12 ;
- 观测3结果 因为宽度超标为5 第五位没被读取就 成15.6,自动补位0 = 15.60;
- 所以尽量不要加输入格式,以免画蛇添足。
.
1.2 字符型变量输入格式
- SAS 默认对字符长度8字节(一个中文2个字节),如果变量宽度超过8字节 最好添加宽度值保证数据输出正确。
其中,字符输入变量格式为主要是 $ w.(小数点是必须添加的),$是必须添加的,w表示字节数。
.
1.3 日期型变量输入格式
w为日期宽度,宽度要小于32字节,
-
输入数据的形式不同,就要指定和它对应的输入格式
例如: 输入 072520 ,按月日年形式,w总宽度==6,要指定 mmddyy6 ,而不能想当然指定其他格式。如:yyyymmdd6,这是错误的!! -
年月日之间可以加分隔符 " - " " / " " . " 等, 分隔符也占字节。 如 20-02-26 要指定成 yymmdd。
-
如果月数日数为一个数 必须➕0 ,如 05,08。
·
·
1.4 两个特殊输入符——:和 &
1.4.1冒号的作用
-
: 放在在 变量与 输入格式之间,作用是:告诉SAS,如果要读取下一个变量,需要满足下面任一条件:要么遇到空隔,要么变量的宽度读完了。
-
举个冒号 : 作用例子:
data fh;
input city $30. zone$;
cards;
广东省汕尾市 0660
广东省汕尾市红海湾 0661
;
proc print;
run;
/* 添加 : 后*/
data fh;
input city: $30. zone$;
cards;
广东省汕尾市 0660
广东省汕尾市红海湾 0661
;
proc print;
run;
-
看看冒号就是这么神奇吧!!
-
在$ 后取宽度时要尽量取大值,防止 “宽度读完” 出现输出值缺失情况。
要注意一旦对变量指定宽度,SAS就按照指定的宽度读取变量,指定宽度就会忽略空格的作用。
看下面日期例子:
data fh;
input day1 yymmdd6. day2 yymmdd8.;
cards;
201001 20201005
;
proc print;
run;
/* 加了冒号后显示正常 */
data fh;
input day1: yymmdd6. day2: yymmdd8.;
cards;
201001 20201005
;
proc print;
run;
- 总结: 如果超过2个以上的变量指定了宽度,最好用冒号结合大的宽度的方式输入,这样不会出现错误。
1.4.2 &号的作用
- 当变量值包含空格怎么办?? ?
只要在变量名加上& 就OK,例如:
data fh;
input city: $50. name $50.;
cards;
广东省 汕尾市 唐门 唐樽
广东省 汕尾市 红海湾 浩天 唐樽
;
proc print;
run;
这样跟我们想的不一样,
data fh;
input city&: $50. name& $50.;
cards;
广东省 汕尾市 唐门 唐樽
广东省 汕尾市 红海湾 浩天 唐樽
;
proc print;
run;
- 添加了 & 在 $前,在想隔开的数据前打上2个或者2个以上空格,这样SAS就把这 “2个或者2个以上空格”作为变量分隔符,而不是把一个空格作为分隔符了。
学了变量的输入格式下一章就是 变量的输出格式啦!!
点击链接查看哦—>SAS 变量的输出格式