《SAS编程与数据挖掘商业案例》学习笔记之十二
本次重点在: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
《SAS编程与数据挖掘商业案例》学习笔记之十二的更多相关文章
- 《SAS编程和数据挖掘商业案例》第14部分学习笔记
继续<SAS编程与数据挖掘商业案例>学习笔记系列,本次重点:经常使用全程语句 所谓全程语句.是指能够用在不论什么地方的sas语句,既能够用在data数据步语句里面,也能够用在proc过程步 ...
- 《SAS编程和数据挖掘商业案例》学习笔记# 19
继续<SAS编程与数据挖掘商业案例>学习笔记,本文側重数据处理实践.包含:HASH对象.自己定义format.以及功能强大的正則表達式 一:HASH对象 Hash对象又称散列表,是依据关键 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程
SAS学习笔记之<SAS编程与数据挖掘商业案例>(5)SAS宏语言.SQL过程 1. 一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作
SAS学习笔记之<SAS编程与数据挖掘商业案例>(2)数据获取与数据集操作 1. SET/SET效率高,建立的主表和建表索引的查询表一般不排序, 2. BY语句,DATA步中,BY语句规定 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区, ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十六
<SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包含:宏变量.宏函数.宏參数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-to ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十五
继续<SAS编程与数据挖掘商业案例>读书笔记,本次重点:输出控制 主要内容包含:log窗体输出控制.output窗体输出控制.ods输出控制 1.log窗体输出控制 将日志输出到外部文件 ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十八
接着曾经的<SAS编程与数据挖掘商业案例>,之前全是sas的基础知识,如今開始进入数据挖掘方面笔记,本文主要介绍数据挖掘基本流程以及应用方向,并以logistic回归为例说明. 一:数据挖 ...
随机推荐
- iOS 基于第三方QQ授权登录
基于iOS实现APP的第三方QQ登陆.接入第三方SDK时的一个主要的步骤: 1,找到相关的开放平台.QQ互联平台,http://connect.qq.com/: 2,注冊成功后创建自己的APP.填写一 ...
- 读阮一峰《ECMAScript 6 入门》小结
读阮一峰<ECMAScript 6 入门>小结,http://es6.ruanyifeng.com/ 1. ES6简介 Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转 ...
- [Vue + TS] Create Type-Safe Vue Directives in TypeScript
Directives allow us to apply DOM manipulations as side effects. We’ll show you how you can create yo ...
- 108.sqllite3(C语言数据库库)详解
//创建数据库,插入表,生效 //创建数据库,插入表,生效 void create_database() { //数据库指针 sqlite3 *db=; //打开数据数据库,初始化指针 int res ...
- 1.7 Python基础知识 - 模块初识
在Python中有很多模块,模块对应的就是python源代码文件.模块中有Python程序自己附带的标准模块,还有很多其他人共享的第三方模块.模块中可以定义变量.函数和类.而多个功能类似的模块可以组织 ...
- Javascript和jquery事件--键盘事件KeyboardEvent
Js和jq事件—键盘事件KeyboardEvent 键盘事件keydown,keypress和keyup,还需要涉及到一个文本事件textInput. keydown,keypress和keyup事件 ...
- 洛谷—— P1434 滑雪
https://www.luogu.org/problem/show?pid=1434#sub 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜 ...
- AbstractQueuedSynchronizer的介绍和原理分析
简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础.使用的方法是继承,子类通过 ...
- ajax+客户端与服务器端的交互
一. AJAX 原生JS var xhr=new XMLHttpRequest(); xhr.open("GET","[请求地址]",false); xhr.o ...
- HDU 1996汉诺塔VI
题目: n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列.由于 发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱 子从下往上的大小仍保持 ...