SAS的基本使用介绍1(数据集建立与输入输出格式)

SAS的基本使用

提前说明:本软件安装较为复杂,而且所占空间很大

运行helloworld

Data a;
File print;
Put 'hello world!';
Run;

Proc print;
Run;

SAS数据集的建立

使用SAS首先需要建立数据集–DATA步

1.直接输入

数据集操作的基本结构框架

data 数据集名;
input 变量1 变量2 ......;
*input 用于输入变量
cards;(datalines;)
数据

;
*数据输入结束,必须换行打分号
*cards/datalines用来引领数据输入

数据与变量相对应,SAS使用单词cards,因为历史上需要打卡输入,现在新增datalines

*举例
data e;
input id name $ provience $;
cards;
12 liwei shanxi
;
proc print;
run;

注意:
字符串需要在变量名字后面加上$
注意在变量名中不能使用中文
不区分大小写

2.数据库导入,通过数据库、数据录入软件

永久数据集建立

数据库建立后,自动保存在资源管理器的逻辑库里,work里存放刚建的数据库,其他存放SAS自身数据,work是专门留给用户存放数据使用,但关闭之后会消失是临时数据。

数据存入逻辑库文件夹

在数据集前加上文件夹名

data sasuser.e;

引入新建的文件夹路径:

方法一:界面菜单操作

  1. 先建立文件夹
  2. 在菜单点击”新建逻辑库”,链接新建文件夹路径,资源管理器里会新增该逻辑库
  3. 同上在数据集前面加上逻辑库名

注意界面方式选择界面新建文件夹路径可能不全,需要小心

方法二:命令操作

libname 逻辑库文件夹名 "文件夹路径名称"

方法三:直接使用data语句指定一个路径和SAS数据集名

data "文件夹路径\数据集名称"

由于在资源管理库里面没有自主命名,会生成wc开头的默认文件夹

变量输入格式

20210918 有可能是读出日期或数字,由输入格式决定

数值型变量的输入

格式:w.d。w表示数值的总位数或宽度(包括小数点),d表示数值的小数部分的位数,即使没有小数,点号也一定要加上

input 变量1 输入格式1
data fh;
input x 4.2;
cards;
12
2.1
15.6
23.46
;
proc print;
run;

>>0.12 2.10 15.60 23.40

读几位已经确定,然后再保留后两位所以是23.40
对整数保留小数,SAS直接降做小数处理
注意小数点占一位

通常数值输入不加输入格式,避免出错

字符型变量的输入格式

格式 $w.

其中 $必须有,w表示字节数(一个汉字占两个字节),SAS默认读取8位

日期型变量输入

单独只有输入时运行会出问题,还需要输出格式辅助

下列是常见的几种日期型输入格式,其中w表示日期宽度,宽度值不能超过32,具体写多少要根据录入的数据宽度而定

SAS的基本使用介绍1(数据集建立与输入输出格式)
想要具体了解SAS日期型变量的输入格式可参见:
SAS官方关于日期变量的文件

; 特殊输入符

  1. :冒号的作用
data fh;
input city $16. DDD$;
cards;
陕西省西安市 029
陕西省汉中市洋县 0916
;
proc print;
run;
>>出现格式混乱

分析:由于变量指定了宽度导致出现问题,SAS就不再以默认的空格作为变量区分的标志了,而是按照指定的宽度来识别变量

解决:在变量和输入格式之间加上一个冒号,命令SAS,如果要读取下一个变量需要满足以下两个条件:要么遇见空格,要么按宽度读取

data fh;
input city: $16. DDD$;
cards;
陕西省西安市 029
陕西省汉中市洋县 0916
;
proc print;
run;
  1. &作用

如果变量观测值本身有空格,在变量后面加上&

data fh;
input city: $16. DDD$;
cards;
陕西省 西安市 029
陕西省 汉中市洋县 0916
;
proc print;
run;
>>输出错误

解决:首先,两个观测值非等长,故在指定宽度的同时需要加上冒号
然后,在变量后面加上&符号,并在编程输入时,将同行前后两个不同变量值之间加上2个或者更多空格
分析:&的作用在于把2个或者更多的空格作为分隔符。

data fh;
input city&: $20. DDD$;
cards;
陕西省 西安市  029
陕西省 汉中市洋县  0916
;
proc print;
run;

输出格式

format 变量1 格式1 变量2 格式2;
* 在input与cards之间

数值型变量输出格式

w.d,commaw.d和percentw.d

w.d和输入使用相同

commaw.d的作用是将数值的整数部分自右向左每三位用逗号隔开,当数值位数较多时,这是比较标准的表示方式。

percentw.d的作用是将数据显示为百分比的形式,它自动将变量值乘以100,并加上%。

%需要占三个字节

data e3;
input a1 a2 a3;
format a1 6.2 a2 comma13.2 a3 percent8.2;
cards;
50 1054387 0.123
13 97490321 0.18
;
proc print;
run;

格式:w.d。w表示数值的总位数或宽度(包括小数点),d表示数值的小数部分的位数,即使没有小数,点号也一定要加上

字符型变量

$w.

输出与输入格式相同,但不同在于输入格式中默认读取8个字符, 但输出没有8个字符的限制

日期输出

data dat;
input d1: yymmdd10. d2: yymmdd10.  d3: yymmdd10. d4:yymmdd10. d5: yymmdd10.;

format d1 yymmdd10. d2 yymmdds8.  d3 yymmddp10. d4 yymmddb8.  d5 yymmddc8.;
cards;
20.06.16 200616 20200616 200616 200616
;
proc print ;
run;

SAS的基本使用介绍1(数据集建立与输入输出格式)

输出格式 在 yymmdd后面+字母

d 表示以’ – ‘ 形式显示日期;
s 表示以’ / ‘ 形式显示日期;
p 表示以’ . ‘ 形式显示日期;
b 表示以’ 空格 ‘ 形式显示日期;
c 表示以’ : ‘ 形式显示日期;
n 表示以’ 无连接符 ‘ 形式显示日期;
字母不可以加在 date7.或date7. 的格式 !!
SAS默认使用 ‘ – ‘ 连接年月日。

输入与输出之间的关系

如果指定输入格式,SAS就按照这种格式读取数据,会真正改变输入值
而输出格式不会真正改变输入值,只是按指令格式显示而已。
例如:X值为xian,指定输入格式为2,则X值就是xi;如果X的输入值为xian,但输出格式为2,那么X的值仍为xian,但输出是xi

data ww;
input x$ y$2.;  /* y 是输入格式定义 2.  */
format x$2.;    /* x 是输出格式定义 2.  */
x1 = x+1;       /* x1 本质还是 1100 +1 = 1101 */
y1 = y+1;       /* y1 输入格式改变2. y=11,y1=11+1=12 */

cards;
1100 1100
;
proc print;
run;
  • SAS 会自动把字符型转为数值型参与运算,并在日志窗口有显示

资料来源:课程-SAS编程基础与实例分析

Original: https://blog.csdn.net/m0_52739647/article/details/120372549
Author: CookieskyXDU
Title: SAS的基本使用介绍1(数据集建立与输入输出格式)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/600908/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球