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;
引入新建的文件夹路径:
方法一:界面菜单操作
- 先建立文件夹
- 在菜单点击”新建逻辑库”,链接新建文件夹路径,资源管理器里会新增该逻辑库
- 同上在数据集前面加上逻辑库名
注意界面方式选择界面新建文件夹路径可能不全,需要小心
方法二:命令操作
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日期型变量的输入格式可参见:
SAS官方关于日期变量的文件
; 特殊输入符
- :冒号的作用
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;
- &作用
如果变量观测值本身有空格,在变量后面加上&
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;
输出格式 在 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/
转载文章受原作者版权保护。转载请注明原作者出处!