SAS变量的只有 数据型 和 字符型, 输入格式:
input 变量1 输入格式1 变量2 输入格式2 ..... ;出现结果是不是跟想的不一样?
观测1 的结果,是因为 SAS系统 规则,定义时每个系统要有2位小数,所以必须有2位小数,没有小数点就自动把整数降为小数。例如 12.0 读成12.00,12 读成 0.12 ;观测3结果 因为宽度超标为5 第五位没被读取就 成15.6,自动补位0 = 15.60;所以尽量不要加输入格式,以免画蛇添足。 ..
w为日期宽度,宽度要小于32字节,
输入数据的形式不同,就要指定和它对应的输入格式 例如: 输入 072520 ,按月日年形式,w总宽度==6,要指定 mmddyy6 ,而不能想当然指定其他格式。如:yyyymmdd6,这是错误的!!
年月日之间可以加分隔符 " - " " / " " . " 等, 分隔符也占字节。 如 20-02-26 要指定成 yymmdd。
如果月数日数为一个数 必须➕0 ,如 05,08。
· ·
: 放在在 变量与 输入格式之间,作用是:告诉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个以上的变量指定了宽度,最好用冒号结合大的宽度的方式输入,这样不会出现错误。这样跟我们想的不一样,
data fh; input city&: $50. name& $50.; cards; 广东省 汕尾市 唐门 唐樽 广东省 汕尾市 红海湾 浩天 唐樽 ; proc print; run; 添加了 & 在 $前,在想隔开的数据前打上2个或者2个以上空格,这样SAS就把这 “2个或者2个以上空格”作为变量分隔符,而不是把一个空格作为分隔符了。 学了变量的输入格式下一章就是 变量的输出格式啦!!点击链接查看哦—>SAS 变量的输出格式