SAS/数据管理
外观
< SAS
数据存储在目录中。您可以使用 'libname' 语句为该目录命名。
LIBNAME name_of_the_libraray "W:/Desktop" ;
- Proc 数据集
- Proc 内容
- Proc 打印
Proc 数据集允许列出库中所有数据集的内容
libname lib "W:\…\data" ;
proc datasets library = lib;
contents data=_all_;
run;
以下程序从期望值为 1.75、标准差为 0.1 的正态分布中抽取 5 个观察值。rannor() 函数从标准正态分布中抽取。参数指定种子。这允许可重复性。
data taille ;
do i = 1 to 5 ;
x = 1.75 + 0.1 * rannor(1) ;
output ; end ; run;
如果您知道分位数函数(逆 CDF),您可以使用逆 CDF 方法在分布中进行抽取。您只需在均匀分布中进行抽取,并使用逆 CDF 函数转换抽取的结果。以下是用 Gumbel 分布为例
gumbel = - log(-log(ranuni(0))) ;
data base ;
input x u ;
cards ;
1 -1
2 1
3 -1
4 1
5 -1 ;
run ;
proc print data = base ; run ;
proc sort data=lib.data out=lib.data2 tagsort;
by x1 x2;
run;
默认情况下是升序排序。如果要将最高的值放在最前面,可以使用按降序.
proc sort data=lib.data out=lib.data2 tagsort;
by x1 descending x2;
run;
最好在合并数据之前对其进行排序。
data lib_name.data_name3;
merge lib_name.data_name3 (in=a) lib_name.data_name2 (in=b);
by x1;
if a and b;
run;
DATA a; INPUT famid name $ inc98;
DATALINES;
2 Art 22000
1 Bill 30000
3 Paul 25000;RUN;
DATA b;
INPUT famid inc96 inc97 inc99;
DATALINES;
3 75000 76000 77000
1 40000 40500 41000
2 45000 45400 45800
4 200 300 100
;RUN;
PROC SORT DATA=a; BY famid;
RUN;
PROC SORT DATA=b; BY famid; RUN;
DATA merge121;
MERGE a(in = a) b(in = b) ;
BY famid;
froma = a;
fromb = b;
RUN;
您可以从 CSV 文件导入
proc import datafile="E:/Data/recidiv.csv"
out=lib.recidiv replace;
run;
您也可以指定分隔符。
proc import datafile='W:/…/australia2.csv' out=work.australia replace;
delimiter = ";";
run;
您可以从 xls 文件导入。
proc import datafile="C:/Documents and Settings/.../Bureau/base.xls"
out=work.base replace;
sheet = "Table 1" ;
run;
首先可以导出到 Excel
PROC EXPORT DATA= lib.database OUTFILE= "W:/Desktop/export.xls"
DBMS=EXCEL2000 REPLACE;
RUN;
可以使用输出传递系统 (ODS) 创建汇总表。以下程序创建一个交叉表并将其存储在新的数据集中。
ods trace on ;
ods output CrossTabFreqs = lib.aggregate ;
ods listing close ;
proc freq data = lib.ficus (where = (effec < 100));
table effec * eff_moy ;
run ;
ods output clear ;
ods output close ;
ods trace off ;
ods listing ;