《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回归为例说明. 一:数据挖 ...
随机推荐
- 【LeetCode-面试算法经典-Java实现】【144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)】
[144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bina ...
- 【原创】k8s源代码分析-----EndpointController
转自本人空间 http://user.qzone.qq.com/29185807/blog/1459325937 一.controller manager创建endpointController 代码 ...
- 分享一段php获取随意时间的前一天代码
<?php /** * 获取给定日期的前一天 * @param string $date * @return string $yesterday */ function getYesterday ...
- RelativeLayout-代码中成员控件width height
今天需要在代码中动态的设置一个textview的width跟height属性,记录下来. textview在xml中的布局如下 <RelativeLayout android:layout_wi ...
- TypeScript基础知识
一. TypeScript是js的超集,可以应用所有js语法 二. 特点: 1. 优点 a. 可以在编译阶段就发现大部分错误,这总比在运行时候出错好 b. 同一目录下不同文件中,使用统一命名,会有命名 ...
- VS Code 好用的扩展程序
1. Atom One Dark Theme.看得比较舒服的主题. 2. Beautify.格式化代码必备. 3. Bracket Pair Colorizer.不同层次的括号颜色不同,光标在括号间时 ...
- windows服务插件利器-新生命组件XAgent使用心得
1.简单介绍 XAgent为大石头带领下的新生命团队自己开发的一个.Net下的常用的Windows服务管理组件利器,通过在控制台中简单的输入1,2,3,4,5等数字可以实现一步安装.卸载Windows ...
- 用c实现的各种排序的方法
#include <stdio.h> void swap(int *a, int *b); void bubble_sort(int a[], int n); void select_so ...
- cwRsync 同步时报错 STATUS_ACCESS_VIOLATION
cwRsync 同步时报错 STATUS_ACCESS_VIOLATION windows XP 执行 cwRsync 同步时报错: 2 [main] rsync 3044 _cygtls::h ...
- Android时间戳与字符串相互转换
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public cl ...