SAS 输入与输出格式

SAS 输入与输出格式

一、认识SAS中的数据格式

SAS 中的格式有:

  1. 数字型
  2. 字符型
  3. 日期型

1、其中数字型的格式有一下集中表示方式:

  1. 整型数值:321
  2. 浮点数值:321.123
  3. 带逗号的数值:123,21
  4. 到$的数值:$12321
  5. 带$符号的逗号浮点数据:

2、以字符型的数据格式只有一种,字符长度

3、日期格式分以下几种:

  1. 日期型:0值(1960.1.1),其他日期为与其的差值
  2. 时间型:0值(0时0分0秒)
  3. 日期时间型:0值(1960年1月1日0时0分-秒)

二、对数值型数据的输入与输出格式处理

常规输入格式为:w.d

  w.d : 读入宽度为w的原始数据,并存为SAS数值,也能自动读入以浮点方式的原始数据。

常见的输出格式为:bestw.d, w.d(将数值不超过d位小数及总宽度不超过w位的定点数表示) 和 Ew.(表示宽度不超过w的浮点数表示)

1、整型数值:321  (可以采用输入格式进行表示)

2、浮点数值:321.123(可以采用输入格式进行表示) 

3、带逗号的数值:123,21

data work.test1;
input x1 comma7. x2 comma7.;
datalines;
123,112 332,1
412,3 321,678
;
run;
proc print data=work.test1;
run;

使用comma7.来对数据进行特殊的读取。

打印结果如下:

4、到$的数值:$12321

data work.test1;
input x1 dollar7. x2 comma7.;
datalines;
$123,112 332,1
$412,3 321,678
;
run;
proc print data=work.test1;
run;

三、字符串的数据格式

1、输入格式:$w. 和 $CHARw.

共同特点:缺省值均为变量的长度

不同点:

  $w. :必须指定w的值,不保留字符串前的空格

  $CHARw.:w的缺省值为8,保留字符串前的空格

2、输出格式:$w. 和 $CHARw.

共同特点:保留字符串前的空格

四、日期时间型

1、日期输入格式:YYMMDDw.

  (1)读入的数据形式为:yymmdd / yyyymmdd

  W:6-32,缺省为6

  其他格式:MMDDYYw.和DDMMYYw.

  (2)MMDDYYw.读入的数据形式为:mmddyy/ mmddyyyy

  (3)DDMMYYw.读入的数据形式为:ddmmyy/ddmmyyyy

2、日期输出格式:YYMMDDxw.

  (1)输出的数据形式为:yymmdd/yyyymmdd

  w:2-10(x为N时,2-8),缺省为8

  (2)YYMMDDw.相当于YYMMDDDw.(第三个D表示-)

  (3)MMDDYYxw.和DDMMYYxw.

3、特殊日期输入/输出格式:Datew.

  输入/输出日期的格式为:ddmmmyy/ddmmmyyyy

  缺省方式为DATE7.

4、时间输入格式:TIMEw.

  读入的时间形式为:hh:mm:ss.ss

5、时间输出格式:TIMEw.d

  d:可指明秒数包含的小数位数

  输出时总带有分隔符(:)

  宽度不够时,先显示小时数,在显示分钟,在是秒数

6、日期时间输入格式:DATETIMEw.

  读入的日期时间形式为:ddmmmyy hh:mm:ss.ss /ddmmmyyyy hh:mm:ss.ss

  w:13-40,缺省为18

7、日期书简输出格式:DATETIMEw.d

  输出格式:ddmmmyy hh:dd:ss.ss / ddmmmyyyy:hh:mm:ss.ss

  w:7-40,缺省为16

五、自定义格式

语法:

proc format;
value 自定义输出格式名字 定义的格式;
run;

自定义输出格式名字:应符合SAS的命名要求,注意最后一个字符不能是数字。

定义的格式:原始值=格式化的输出值

如以下是原始的数据代码:

data work.qespart;
input id$ sex height weight band46$;
cards;
cnw1r01 2 154 49 C
cnw1r02 1 169 64 B
cnw1r03 1 199 54 C
cnw1r04 2 133 90 D
;
run;
proc print data=work.qespart;
run;

使用自定义格式编辑输出格式:

proc format ;
value sexfmt 1='Male' 2='Male';
value $bandfmt 'A'='增加' 'B'='不变' 'C'='减弱';
run;
data work.qespartfmt;
set work.qespart;
format sex sexfmt. band46 $bandfmt.;
run;
proc print data=work.qespartfmt;
run;

 

posted @ 2019-02-27 16:57  suolilian  阅读(8995)  评论(0编辑  收藏  举报