SAS 基础(1)SAS 变量的输入格式——细则

(106) 2024-03-27 10:01:01

SAS变量的输入格式

    • SAS 变量的输入格式
      • 1.1 数据型变量输入格式:
      • 1.2 字符型变量输入格式
      • 1.3 日期型变量输入格式
      • 1.4 两个特殊输入符——:和 &
          • 1.4.1冒号的作用
          • 1.4.2 &号的作用

.

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;

SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第1张
出现结果是不是跟想的不一样?

  • 观测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字节,

SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第2张

  • 输入数据的形式不同,就要指定和它对应的输入格式
    例如: 输入 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;

SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第3张

/* 添加 : 后*/
data fh;
input city: $30.  zone$;
cards;
广东省汕尾市 0660
广东省汕尾市红海湾 0661
;
proc print;
run;

SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第4张

  • 看看冒号就是这么神奇吧!!

  • 在$ 后取宽度时要尽量取大值,防止 “宽度读完” 出现输出值缺失情况。
    要注意一旦对变量指定宽度,SAS就按照指定的宽度读取变量,指定宽度就会忽略空格的作用。
    看下面日期例子:

data fh;
input day1 yymmdd6. day2 yymmdd8.;
cards;
201001 20201005
;
proc print;
run;

SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第5张

/* 加了冒号后显示正常 */
data fh;
input day1: yymmdd6. day2: yymmdd8.;
cards;
201001 20201005
;
proc print;
run;

SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第6张

  • 总结: 如果超过2个以上的变量指定了宽度,最好用冒号结合大的宽度的方式输入,这样不会出现错误。
1.4.2 &号的作用
  • 当变量值包含空格怎么办?? ?
    只要在变量名加上& 就OK,例如:
data fh; 
input city: $50.  name $50.; 
cards; 
广东省 汕尾市 唐门 唐樽 
广东省 汕尾市 红海湾  浩天 唐樽 
; 
proc print; 
run;

SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第7张
这样跟我们想的不一样,

data fh; 
input city&: $50.  name& $50.; 
cards; 
广东省 汕尾市  唐门 唐樽 
广东省 汕尾市 红海湾  浩天 唐樽 
; 
proc print; 
run;
  • 添加了 & 在 $前,在想隔开的数据前打上2个或者2个以上空格,这样SAS就把这 “2个或者2个以上空格”作为变量分隔符,而不是把一个空格作为分隔符了。
    SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第8张
    SAS 基础(1)SAS 变量的输入格式——细则 (https://mushiming.com/)  第9张
    学了变量的输入格式下一章就是 变量的输出格式啦!!

点击链接查看哦—>SAS 变量的输出格式

THE END

发表回复