本次重点在:sas数据集管理

主要包含:包含数据集纵向拼接、转置、排序、比較、复制、重命名、删除等

1.append语句

注:base数据集和data两个数据集必须结构一样。避免使用force的情况,反复append的会造成反复。

一个避免反复的商业化应用:

%macro dl;

%if %sysfunc(exist(null)) ne 0 %then %do;

proc datasets lib=work nolist;

delete null;

quit;

%end;

proc append base=null data=sashelp.class;run;

%mend dl;

%dl;

假设数据集null存在,则进行删除,否则直接append

还有一个使用的样例;

data _null_;

x=today();

format x yymmdd10.;

call symput('data_month',put(intnx("month",x,0),yymmn6.));

run;

%put &data_month;

data a;

input month$ var;

cards;

200908 10

200909 20

200910 30

200911 40

;

data b;

input  month$ var;

cards;

200911 400

;

data a;

modify a;

if month="&data_month" then remove;

run;

proc append base=a data=b;run;

第一部分:获取当前月

第二部分:删除当前月数据

第三部分:append到数据a

当中第二部分能够用下面两个语句替代,可是效率最高的是remove。效率最低的是sql。

data a;

set a;

if month="&data_month" then delete;

run;

proc sql;

delete from a

where month="&data_month";

quit;

2.sort语句

经常使用选项:

nodupkey:删除反复by值相应的观測

noduprecs:删除反复观測值

Descending 一定要放在降序排序的变量前。

Eg:

data a;

input x y @@;

cards;

1 20 1 10 1 30 2 40 2 50

;

run;

proc sort data=a nodupkey; by x;run;

仅仅取排序变量的每个by组的第一条观測值

上述代码也能够用下面取代:

proc sort data=a ; by x;run;

data b;

set a;

by x;

if first.x;

run;

返回每个by组里面y最小的。

proc sort data=a; by x y;run;

proc sort data=a nodupkey; by x;run;

也能够用data步完毕:

proc sort data=a; by x y;run;

data b;

set a;

by x y;

if first.x;

run;

注:假设使用了nodupkey选项。最好使用out=选项,否则原有数据集会被删除掉一部分。

对于多个字符变量须要sort的情况下,sort前先用catt之类的字符拼接函数拼接全部须要sort的字符变量。

并最好使用out=选项。

data a;

length cat $100;

input x1$ x2$ x3$ y;

cat=catt(of x1-x3);

cards;

a1 b1 c1 1

a2 b2 c2 2

;

run;

proc sort data=a out=b;

by cat;

run;

下面代码也能够运行,可是效率低

proc sort data=a out=b;

by x1-x3;

run;

proc sort data=a ;

by x1-x3;

run;

3.转置transpose过程

proc transpose data= chapt6.score out= chapt6.idnumber name=test prefix=sn;

id studentid;

idlabel student;

run;

注:转置的变量为全部的数值型变量,包含test1、test2、final

对于默认的变量名用studentid取代,并加入前缀sn

对于默认的转之前变量名列转置后的列名_name_改为test,

转置后的变量添加student值

eg:

proc transpose data= chapt6.fishdata

out= chapt6.fishlength(rename=(col1=measurement));

var length1-length4;

by location date;

run;

by组中的4个变量length1-length4进行转置。系统每读取一条by观測。转置后将产生4条观測

data chapt6.fishlength2;

set chapt6.fishdata(keep=location date length1-length4);

array tr[1:4] length1-length4;

do i=1 to 4;

measurement=tr(i);

output;

end;

keep location date measurement;

run;

通过data语句实现上面的转置过程

proc transpose data= chapt6.fishlength

out= chapt6.fishdata2;

var measurement;

by location date;

id _name_;

run;

列转成行

data chapt6.fishdata3;

do i=1 to 4;

set chapt6.fishlength(keep=location date measurement);

array tr[1:4] length1-length4;

tr(i)=measurement;

end;

keep location date length1-length4;

run;

通过data步骤实现列转成行

4.datasets过程

见sashelp

最新文章

  1. 笔记整理之 Bulk Insert
  2. bzoj1734 愤怒的牛
  3. BundleConfig 的使用 通配符
  4. 网易云课堂 OCP
  5. ASP.NET验证控件一
  6. grep sed
  7. qq邮箱发送
  8. update 改写 merge into
  9. R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法
  10. oracle中if/else
  11. 2013年最好的Python开源项目汇总
  12. MyEclipse调整项目的顺序
  13. 想从事IT行业的你,一定看看这篇文章
  14. Hadoop介绍和环境配置
  15. 2019南昌邀请赛网络预选赛 M. Subsequence
  16. CodeSmith Generator 7.0.2的激活流程
  17. K2百家讲坛 | 越秀地产:K2为房企数字化转型带来更多可能
  18. Linux 虚拟文件系统概述
  19. struts转发和重定向action
  20. WPF 格式化输出- IValueConverter接口的使用 datagrid列中的值转换显示

热门文章

  1. linux/unix 基本概念的认识(sha-bang 、PPA)
  2. 3.第一个Node.js程序:Hello World!
  3. the resource is not on the build path of a java project错误
  4. Linux与好莱坞电影
  5. python绘图问题
  6. CentOS不能进入登录界面
  7. Cts框架解析(1)-windows下cts配置
  8. dot 语法全介绍
  9. 学习笔记:_lodash.js常用函数
  10. GO语言学习(十七)Go 语言类型转换