SAS数据集

sas数据集是由sas创建并且处理的文件

浏览描述部分

contents过程可以显示sas数据集的描述部分

procproc contents DATA=SAS-data-set +变量名;
run;

SAS逻辑库

SAS逻辑库就是SAS文件的集合。
如果将SAS逻辑库看成是文件柜中的一个抽屉,那么一个SAS数据集就是抽屉中众多文件夹之一。

逻辑库引用名(libref)

work是SAS的临时库,如果我们直接创建data数据集,而没有写libref时,默认的是创建了一个临时数据集,此时对应的逻辑库就是Work逻辑库;
SAS中也有永久库,叫做sasuser,当然我们也可以创建自己的逻辑库,

LIBNAME libref "SAS-data-library"<option>
libname orion "s:\workshop";

其中orion是逻辑库名,”s:\workshop”是指SAS数据库中物理位置。

在这个我们自己创建的逻辑库中,每个SAS文件有一个二级名称。

数据集orion.sales是orion逻辑库的一个SAS文件
第一级名称:libref指引到逻辑库中;
第二级名称:指引到逻辑库中的文件;

SAS注释

/* comment */*comment

SAS变量值

变量值的类型:分为数值型变量和字符型变量

缺失值:字符型缺失值显示为空格,数值型缺失值显示为句点

浏览数据部分

proc print data=数据集名称 +需要浏览的变量;
run;

浏览数据部分和浏览描述部分是不一样的,注意区分开开

PROC PRINT DATA=SAS-data-set NOOBS;
VAR variable(s);
RUN;

NOOBS选项去掉了报告左侧的观测数列,即obs一列
Var语句选择报告中显示的变量及顺序。

默认情况下,proc print 显示以下内容:
所有观测,所有变量和左侧增加的类似于一个编号类的Obs一列,叫做观测类吧,我猜

读取数据集

内容大纲

读入数据简介
SAS数据集加工
读入Excel工作表
读取带分隔符的原始数据文件
访问关系型数据库

这一节内容的话是我们处理数据的第一步,也就是接触数据的部分,我们的数据来源在这里分成了三种情况,第一种是本来就是SAS数据集,第二种是excel数据,第三种是带分隔符的原始数据,也就是csv数据。

读入SAS数据集

LIBNAME libref 'SAS-data-library';
DATA output-SAS-data-set;
SET input-SAS-data-set;
WHERE where-expression;
KEEP variable-list;
LABEL variable = 'label'
variable = 'label'
variable = 'label';
FORMAT variable(s) format;
RUN;
data work.subset1;
set orion.sales;
where Country='AU' and
Job_Title contains 'Rep';
keep First_Name Last_Name Salary
Job_Title Hire_Date;
label Job_Title='Sales Title'
Hire_Date='Date Hired';
format Salary commax8. Hire_Date ddmmyy10.;
run

下面就讲解这段代码,首先解释几个语句。

libname

这是我们之前就提到的逻辑库的概念,也就是你的文件夹的名字,你的数据是放在哪个文件夹中的。
如果正在读入或者创建一个永久数据集,则需要分配逻辑库的引用名(libref)

libname orion 's:\workshop';

这里是读入SAS数据集。

这里的orion是逻辑库名,
‘s:\workshop’;是SAS数据库的物理位置。

libname orionxls 's:\workshop\sales.xls';

这里的orionxls是逻辑库名,

’s:\workshop\sales.xls’;是指excel工作表的物理文件名,包括路径、文件名和扩展名。

data

data数据集呢是你创建的要放入SAS中的数据集,也就是你要把读入的数据放到哪个数据集中。

问题:要输出到过程步的数据集和你最终要输出的数据集之间有什么关系?

也就是你要输出到过程步的数据集

DATA output-SAS-data-set

可以看出data是创建的一个要输出的数据集。

data后面加上的是你数据集的名称。比如说上面这段代码就是说那你创建了一个名叫work.subset1的数据集。

where

where放在data数据步中呢,主要作用是

set

set这个语句呢就是把你外部的数据读入到你创建的data数据集中,set orion.sales是说你把orion.sales这个外部的数据读入到你创建的data数据中的命令,并在data步中进一步处理

SET input-SAS-data-set;

由上述可以set是读入数据集的操作。默认的情况下是读入所有的观测和变量,set语句能读入临时或永久数据集。

当然我们也可以选择要读入的数据种类,所以可以在data步中加入语句,来减少观测和变量的个数。

(where、keep 、drop、label、format、)

libname orion 's:\workshop';
data work.subset1;
set orion.sales;
run;

这个是指从一个命名为 orion.sales的永久SAS数据集中创建一个命名为Work.subset1的临时SAS数据集。

接着介绍在data步中可以添加的语句

where

一般表达形式:

WHERE where-表达式 ;

比较运算符
算数运算符
逻辑运算符

特殊where运算符:

contains是包含子串
like是比较
区分这两个

选择变量的语句:drop和keep语句

drop语句是指定输出数据集中药删除的变量名称(这里是指在输出集中删除而已,原始数据中是没有改变的)

DROP variable-list;

keep语句是制定要写入的数据集的变量名称

KEEP variable-list;
keep First_Name Last_Name
Salary Job_Title
Hire_Date;

问题:读取带分隔符的原始数据文件用的语句是input,之前的语句是set,所以说有格式的文件读入的时候就不能用set了吧,只有非常标准的文件才能用set 读入

添加永久属性:label和format

SAS数据集的描述部分存储包含名称、类型(字符或数值)和变量长度的变量属性。(这三个属性是固有的必须有的意思)

label

label语句将描述标签赋给变量名

label Job_Title='Sales Title'
Hire_Date='Date Hired';

这里是指在输入数据集中的Job_Title添加标签为’Sales Title’
Hire_Date添加标签为’Date Hired’

在一个data步中使用label语句,通过标签存储在这个sas数据集的描述部分,使标签和变量永久关联

PS:如果想要标签展示在输出的数据集中,则需要在proc print +数据集 后面加上label这个语句。

format

format语句将格式赋给变量值

FORMAT variable(s) format;

格式是SAS用于写出数据的一个指令。

在data步中使用format语句,通过将格式存储在SAS数据集的描述部分中,使格式和变量永久关联。

特别要注意的是数值型格式和日期型格式。

format Salary commax8. Hire_Date ddmmyy10.

这里指出salary变量的格式为commax8.以及Hire_Date变量的格式是ddmmyy10.

PS:

除了Zw.d 用0代替空格来填补右对齐的输出, Zw.d 格式
与w.d 格式相似。

标签和格式也能存储在描述符部分

set语句是从一个SAS数据集中读入观测,并在DATA步中进一步处理
input语句描述了原始数据文件中的数值排列,同时将输入值赋值给相应的sas文件,

SAS中的输出是一条一条输出呢还是一次性输出呢?

读取Excel数据

SAS/ACCESS LIBNAME语句 扩展了LIBNAME语句,将一
个逻辑库名(libref)分配给 Microsoft Excel工作表

libname orionxls 's:\workshop\sales.xls';

这个语句使你能在一个DATA步或SAS程序中直接引用工作
表,读取和写入到一个Microsoft Excel工作表,就像它是
一个SAS数据集。

excel工作簿中的每个工作表被当做一个SAS数据集

libname orionxls 's:\workshop\sales.xls';
data work.subset2;
set orionxls.'Australia$'n;
where Job_Title contains 'Rep';
keep First_Name Last_Name Salary
Job_Title Hire_Date;
label Job_Title='Sales Title'
Hire_Date='Date Hired';
format Salary comma10. Hire_Date weekdate.;
run;

如果SAS将逻辑库名分配给一个Excel工作表,这个工作表将不能在excel中打开,要取消逻辑库,用libname语句并指定库名和clear选项。

libname orionxls clear;

从SAS数据集中创建Excel工作表:data或者copy

data

libname orionxls
's:\workshop\qtr2007a.xls';
data orionxls.qtr1_2007;
set orion.qtr1_2007;
run;

用copy创建excel表

libname orionxls
's:\workshop\qtr2007b.xls';
proc copy in=orion out=orionxls;
select qtr1_2007 qtr2_2007;
run;
proc contents data=orionxls._all_;
run;
libname orionxls clear;

注意在input读入的格式部分的处理以及format部分的格式处理。(这两者有区别吗??)

PS:注意where语句不能用于从一个原始数据文件中选择记录,只能用于从输入数据集中选择部分观测。

用import向导和程序读入一个excel表,export向导和程序创建一个excel表

读取带分隔符的原始数据(是不是就是csv数据呀)

这一节主要讲如何读取带分隔符的原始数据,那个带分隔符的原始数据又分为两种,一种是读取带分隔符的标准数据;一种是读取带分隔符的非标准数据,下面我们来看看这两种之前又什么区别和联系

区分标准数据和非标准数据

读取带分隔符的标准数据

DATA output-SAS-data-set;
LENGTH variable(s) $ length;
INFILE 'raw-data-file-name';
INPUT specifications;
KEEP variable-list;
LABEL variable = 'label'
variable = 'label'
variable = 'label';
FORMAT variable(s) format;
RUN;
infile

infile语句用来定义原始数据文件的物理名称,以便于用input语句读入。(物理名称是指操作系统环境用于访问这个文件的名称,那我还是不懂啊,这个名称是具体到某个盘的某个文件夹下的名称吗)

infile 's:\workshop\sales.csv';
input

input语句描述了原始数据文件中的数值排列,同时将输入值付给相应的sas变量

DATA output-SAS-data-set;
INFILE 'raw-data-file-name';
INPUT specifications;
<additional SAS statements>
RUN;

这里要写一个input语句和set语句的区别,还有一个问题,上文读入的excel语句是外部语句把

分隔符

一个空格(空白)是默认的分隔符,如果想指定其他的分隔符,则用DLM=选项 来进行指定

DATA output-SAS-data-set;
INFILE 'raw-data-file-name' DLM='delimiter';
INPUT specifications;
<additional SAS statements>
RUN;

标准数据的列表输入

INPUT variable <$>;

变量一定要按照它们在原始数据文件中出现的顺序从左到有依次排列。

data work.subset3;
infile 'sales.csv' dlm=',';
input Employee_ID First_Name $ Last_Name $
Gender $ Salary Job_Title $ Country $;
run;

非标准数据的列表输入

列表输入的格式如下:

INPUT variable <$> variable < :informat >;

:修饰符使你可以用一个输入格式读入带分隔符的非标准数据

input Employee_ID First_Name $ Last_Name $
Gender $ Salary Job_Title $ Country $
Birth_Date :date.
Hire_Date :mmddyy.;

额外的SAS语句

这个额外的sas语句包括where /keep/drop/format
其实就和读入sas数据集的处理部分相似了

data work.subset3;
length First_Name $ 12 Last_Name $ 18
Gender $ 1 Job_Title $ 25
Country $ 2;
infile 'sales.csv' dlm=',';
input Employee_ID First_Name $ Last_Name $
Gender $ Salary Job_Title $ Country $
Birth_Date :date.
Hire_Date :mmddyy.;
keep First_Name Last_Name Salary
Job_Title Hire_Date;
label Job_Title='Sales Title'
Hire_Date='Date Hired';
format Salary dollar12. Hire_Date monyy7.;
run;```####记录缺失值
用连个连续的分隔符知名缺失值

data contacts;
length Name 20PhoneMobile 20 Phone Mobile 14;
infile ‘phone2.csv’ dlm=’,’;
input Name Phone Phone Mobile $;
run;
proc print data=contacts noobs;
run;

####DSD选项
infile语句中的dsd选项:
设置默认分隔符为逗号
将连续分隔符视为缺失值
可读入在引号内包含分隔符的数据值

data contacts;
length Name 20PhoneMobile 20 Phone Mobile 14;
infile ‘phone2.csv’ dsd;
input Name Phone Phone Mobile $;
run;
proc print data=contacts noobs;
run;
“`
DLM=‘,’ 选项在INFILE语句中不再需要,因为DSD选
项设置默认分隔符为一个逗号。

@和@@的区别

data

DATA 语句 表示一个数据步的开始,并给出正被创建的
SAS数据集的名字。

set

SET 语句 从一个SAS数据集中读入观测,并在DATA步中
进一步处理。

选择观测和变量

默认情况下, SET语句从输入数据集中读取所有的观测和
变量。
通过添加语句到DATA步,可以减少观测和变量的个数。

一个变量运算数必须是来自输入数据集的一个变量。

SAS操作知识点记录相关推荐

  1. 油猴脚本——掘金Markdown格式适配器知识点记录【油猴脚本、Markdown、浏览器文件读取、tooltip、SVG、、模拟用户输入、aria-xxxx属性、剪切板操作、】

    油猴脚本--掘金Markdown格式适配器知识点记录 脚本更新日志 参考:掘金Markdown格式适配器更新日志 - 掘金 脚本地址: 更新:2021年9月3日19:57:35 参考:掘金Markdo ...

  2. javaweb基础知识点记录2

    javaweb基础知识点记录 1.在service方法中,首先获得请求的方法名,然后根据方法名调用对应的doXXXX方法,比如说请求参数为GET,那么就会去调用doGet方法,请求参数为POST,那么 ...

  3. javaweb基础知识点记录1

    javaweb基础知识点记录 1.当我们通过在浏览器的输入栏中直接输入网址的方式访问网页的时候,浏览器采用的就是GET方法向服务器获取资源. 2.我们可以将Servlet看做是嵌套了HTML代码的ja ...

  4. 毕业论文知识点记录(四)——MaxEnt模型

    毕业论文知识点记录(四)--MaxEnt模型 0 序言 经过了几次文章分享,数据已经准备得差不多了,师姐说可以先利用现有数据跑一个结果,然后再逐步增加想要的环境数据,改善结果. 另外,谨记师姐的一句话 ...

  5. SpringMVC知识点记录

    SpringMVC知识点记录 1. SpringMVC简介 2. 入门案例 3. @RequestMapping注解 3.1 @RequestMapping注解的功能 3.2 @RequestMapp ...

  6. 毕业论文知识点记录(三)——SPSS去相关

    毕业论文知识点记录(三)--SPSS去相关 #(一)数据下载 1.草地贪夜蛾的发生记录,这个数据在前面文章中有描述.草地贪夜蛾发生记录下载 2.气候数据 数据来源:worldclim 我选择的分辨率是 ...

  7. C++教程从0到1入门编程中知识点记录!

    C++教程从0到1入门编程中知识点记录! 一.C语言 1.冒泡排序 示例代码: #include <iostream> using namespace std; int main() { ...

  8. 千锋web前端教学知识点记录及个人理解4

    WEB前端知识点记录(84-109集) 第八十四集-relative相对定位 第八十五集-absolute绝对定位 第八十六集-fixed和sticky及zlndex 第八十七集-定位实现下拉菜单 课 ...

  9. pwnable.kr之Toddler‘s Bottle前八题知识点记录

    pwn刷题网站地址(点击直达): http://pwnable.kr/play.php 文章目录 第一题 fd 第二题:collision 1.首先是char和int数据类型的转换 2.python实 ...

最新文章

  1. 正则表达式中的*,+,?以及\w和\W的区别等常见问题的总结
  2. c# async await 理解 结合并行处理
  3. Windows Hyper-V远程信息泄露漏洞CVE-2017-8712 影响Win2016和win10
  4. Git、TortoiseGit、GitHub、Gitee、GitLab 安装与入门使用
  5. Cisco交换机实现端口安全与帮定
  6. 张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用
  7. 关于项目对表单校验的需求
  8. VC++ 求绝对值函数
  9. 阶段3 2.Spring_03.Spring的 IOC 和 DI_12 注入集合数据
  10. 使用win7超级终端连接华为交换机并配置端口镜像
  11. R语言:商业数据分析实例(4)【总结篇,回归】
  12. 《微积分:一元函数积分学》——基本积分表
  13. 支付宝"手机网站支付"主域名申请了,二级域名还要申请吗
  14. 命令行如何 copy 文件内容到剪切板(clipboard)?
  15. 指数随机变量 泊松过程跳_泊松过程
  16. 【数据库架构】NewSQL和PGXC
  17. 【观察】戴尔易安信ECS:领跑企业级对象存储,背后的底蕴与底气
  18. MySQL数据库操作语言
  19. html处理文字换行
  20. linux 内核 f2fs,f2fs系列之一:实战f2fs 下载、编译和挂载

热门文章

  1. 最新版海洋cmsV10.1审计
  2. c语言输出等腰三角形
  3. 自然语言理解(NLU)相关微信小程序大全
  4. paint 3d_如何使用Microsoft Paint 3D
  5. android读取vcf文件
  6. 中艺人脸识别考勤机使用方法_人脸识别考勤机简单使用说明
  7. 成都IT培训机构哪个好?
  8. win8计算机丢失xinput1+3.dll,win8提示xinput1 3.dll丢失的解决方法
  9. flash与ram的经典理解
  10. IE浏览器打不开了...