|
sas知识基础学习(下篇)
libname建立逻辑库和数据库连接:
libname oralib oracle
user=scott password=p path=liutest dbindex=y
--和oracle类型的数据库连接
取消逻辑库:libname oradb clear; --oradb是逻辑库名字
和db2的连接:libname db2lib db2
authid=scott ssid=p;
820 libname ce1
clear;
NOTE: Libref CE1 has been
deassigned.
数据步读入原始数据:要使用input,datalines和infile语句
使用input语句读入原始数据:input语句的5种输入方式:简单方式,列方式,格式化方式,列表方式,命名方式。
input的列方式:用来读入严格排列好的标准数据
data liu1.scores; --输入到逻辑库liu1的表scores里面
infile datalines truncover;
input name $1-10 sex $11 age
$12-15; --行的第1到10列的值为name的输入值,11列为sex的值,12到15列值是age的值
datalines;
justine F 12
bob M 13
run;
列表方式;要求input语句按照读入数据的顺序设定变量名称。列表方式下的分隔符默认为空格。
用列表方式的条件:输入数据值之间至少由一个空格隔开;用小数点表示缺省值。
:格式修饰符:要对变量值长度不一致的变量规定统一长度就必须用到该格式修饰符。sas默认字符长度8B
data liu1.blank;
input univ:$12. plc$ zip;
cards;
mit boston 100023
tsinghuauniv beijing 100084
run;
如果不对univ归档长度,读入第二条记录时就会只读入tsinghua(8B),就会报错。
&格式修饰符:字符型输入值可能包含一个或几个空格,如果要读入的数据值本身包含空格时就必须用此格式符。
data liu1.blank;
input name & $12. age;
cards;
jiang zhu 20
--jiang zhu 数据值本身有空格
annie zheng 31
I.altman 60
run;
因为&的特性,数据之间应该用两个以上的空格隔开。
~格式修饰符:规定读入字符值保留引号,此格式修饰符只能在infile语句于选项dsd一起使用才有效。
DSD:将默认分隔符改为逗号;如果不加~则自动会把数据中的引号去掉。
data liu1.blank;
infile datalines dsd;
input speakers : $15. title ~$40.
location & $10.;
datalines;
song, "credit
derivatives",room 329 --上面的~格式符会把引号保留
run;
格式化方式: 是input语句读取非标准数据的唯一方法。
格式化方式输入:
data;
infile datalines;
input (x1-x5) (3*7.2,
2*5.2);
...
n*规定在输入列表中后面的输入格式重复n次;上面前3个变量x1-x3格式为7.2.后两个变量x4-x5格式为5.2
data liu1.blank;
input x comma9.2;
datalines;
$1,000.22 --该数据符号加上数字一共是9列;结果是1000.22
run;
分组格式表:含有两个列表
input (s1-s5)(4.) /* s1到s5取值宽度均是4. */
input (a b)($,5.) /* a的格式是$,b的格式是5. */
input (name s1-s5)($10. 5*4.)
/*name格式是$10. s1到s5格式是4. */
data liu1.blank;
input (name score1-score5)($10.
5*4.);
datalines;
whittaker 121 114 137 156 142
smythe 111 97
122 143 127
run;
命名方式输入:如果数据行中有变量的值,后面跟着等号和变量的值,读取数据时应该使用命名输入方式。
input date yymmdd10. fullshr stkcd=$
lstknm=$ ;
数据步文件管理:
data语句: data;系统自动规定数据集名datan, data a; 创建临时数据集a, data
resdat.a;创建永久数据集resdat.a
data data1
data2;创建两个临时数据集data1和data2, data _null_;特殊名,不创建sas数据集,用于输出
data _null_;
input (name
score1-score5)($10. 5*4.);
datalines;
whittaker 121 114 137 156 142
smythe 111 97
122 143 127
run;
data data1 data2; --创建两个临时数据集data1和data2,保存在work逻辑库里
run;
data _null_;常和put用,用来输出结构,只输出到log窗口,不会产生sas数据集。
cards语句:cards语句和datalines语句告诉sas系统下面跟着的是数据行
数据行中有分号时,要用cards4语句或datalines4语句
data _null_;
input var1& var2&var3&;
cards4;
a;b(;);;
run;
put语句:sas系统的log窗口;sas系统的output窗口;file语句规定的外部文件;
input用于输入,put用于输出
by语句;用于规定分组变量,用于控制set、merge、update或modify语句的操作。
set语句:从一个或多个已存在的sas数据集中读取观测值,并将这些观测值组合在一个数据集中
file语句;用于规定将要输出的外部文件。
infile语句:用来定义一个外部数据文件。
data语句表示数据步开始。
keep语句:规定输出数据中要保留的变量
drop语句:规定输出数据集中要删除的变量。

Powered by Discuz! X2.5 © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 ) 论坛法律顾问:王兆丰
GMT+8, 2026-4-12 01:46 , Processed in 0.270779 second(s), 28 queries .