每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

入门学习一周,开始写学习笔记。用习惯R之后,发现SAS程序相对python R还是有点繁杂。但是业务需要,不得不学一下。

代码部分大多来源于姚志勇老师的《SAS编程与数据挖掘商业案例》。

——————————————————————————————————————————

一、逻辑库、数据集、数据字典

数据字典>逻辑库>数据集

逻辑库=工作空间,存储四类内容,test是数据集文件,views是视图(相当于R里面的views点击查看),formats代表文件,sasmacr代表目录内容。

数据集,包括数据文件+SAS视图,可以像R中双击获取数据结构图表,不过这样效率较低,可以使用其他方法,譬如数据字典的方式describe view,详细内容见三、数据查看。

数据字典,是当年进程中所有内容的逻辑库、数据表的一个平铺、列出来。所以,在全局检索上十分有效。我觉得这个非常有用,不过貌似网上对其的定义比较少。

  1. libname fv "F:\SAS\SAS 9.4 space"; /*fv是数据库名字*/
  2. data fv.forever; /* #forever代表在fv下的forever数据集*/
  3. Input x y z;
  4. Cards;
  5. 1 2 3
  6. 4 5 6
  7. ;
  8. run;

code解读:

libname建立逻辑库,相当于R中的workspace中的一个文件夹;

data代表数据表格,data.frame;

与R数据输入不同的是,数据之间不是用逗号,而是空格来进行分割。

1、关于libname

如果,没有libname步骤,直接,data,那么就默认存放在SAS中的默认逻辑库之中,默认逻辑库名字叫“work”。

  1. libname lb clear; #删除

代表删除libname

2、关于数据字典

本节参考海纳百川BLOG的:SAS数据字典访问

访问数据字典方法如下:

1.直接用SQL语句访问Dictionary table
2.访问SAShelp View

表名

包含信息

视图名

DICTIONARY.CATALOGS

SAS目录册及所包含的条目

SASHELP.VCATALG

DICTIONARY.COLUMNS

列(或变量)及其特征

SASHELP.VCOLUMN

DICTIONARY.DICTIONARIES

所有表词典

SASHELP.VDCTNRY

DICTIONARY.EXTFILES

文件标识名和外部文件物理存储地址

SASHELP.VEXTFL

DICTIONARY.INDEXES

SAS数据集索引

SASHELP.VINDEX

DICTIONARY.MEMBERS

SAS数据集

SASHELP.VMEMBER

DICTIONARY.OPTIONS

目前设定的SAS系统选项

SASHELP.VOPTION

DICTIONARY.STYLES

ODS类型

SASHELP.VSTYLE

DICTIONARY.TABLES

SAS数据文件和视图

SASHELP.VTABLE

DICTIONARY.VIEWS

SAS数据视图

SASHELP.VVIEW

  1. /*数据字典把当前SAS环境中的所有内容进行汇总归类到这个里面,方便检索*/
  2. proc sql flow=10;
  3. title2 'do the columns have formats,informats,or labels';
  4. title3 'dictionary.columns';
  5. /*#所有表的列变量*/
  6. create table colinf as
  7. select name,type,length,label,format,informat
  8. /*#变量名称*/
  9. from dictionary.columns
  10. where libname='SASHELP' and memname='CLASS';
  11. /*#注意要大写 */

打开explorer window,在SASHELP这个library下,以V开头的视图实际上是Dictionary table内容的复制。如

proc sql;describe view sashelp.voption;quit;

可以看到voption这个视图的内容来自dictionary.options。   而对于View,除了SQL,直接用data步或proc步都可以访问。如

  1. data test2;
  2. set sashelp.vcolumn;
  3. where libname="WORK" and memname="TEST";
  4. run;

或者
proc contents data=sashelp.voption;
run;或者在command栏输入viewtable sashelp.voption。

——————————————————————————————————————————

二、SAS的数据导入与其他平台接入方式

SAS获取数据的几个方式:外部数据导入、passthrough方式、import方式、input方式。大多通过libname来调入。

1、数据库外部接入

  1. /*#数据库,外部接入*/
  2. libname hsdb db2 user=xxuser password="xxxx" datasrc=datadb;
  3. /* #在逻辑库hsdb中,db2代表数据库名称,datasrc代表SQL中的数据集名称*/

还有RODBC访问。

  1. /*通过RODBC访问 需要设置很多内容*/
  2. libname odb odbc user=*** password=*** datasrc=test;
  3. libname hsdb odbc noprompt="uid=xxxuser;pwd=xxxxx;dsn=datadb;" schema=hsuser

2、外部导入,spss数据

  1. /*SPSS数据集,外部接入*/
  2. libname sps spss '';

3、oracle数据集,外部接入

  1. /*oracle数据集,外部接入*/
  2. libname oralib oracle user=xxx pw=xxx path dbmssrv schema=educ;

4、input方式导入数据

input里面有很多小符号,譬如@@ 和@的区别,$&。不过,也正是这些符号,让我觉得... 导个数据也忒费劲了...不过,这个也是数据输入中最复杂的问题了。。

关键就在这指针问题上,

@代表指针还在这行,只能罩着下一个input,如果没有两个input,那么跟没有@一样,直接跳到下一行;接下来一个有,则相当于指针在这行;

@@代表指针一直在同一行;

没有@,代表指针跳到下一行。

"$",表示字符型变量,&代表数值型。

  1. data test;
  2. infile cards ;
  3. input x @; /*单个@,能H住,有效期到下一个input语句*/
  4. input y; /*没有@,H不住,下一个input语句会去读新的一行*/
  5. input z @@; /*两个@,H住没问题,有效期延长到Data步下一圈*/
  6. cards;
  7. 1 2 3
  8. 4 5 6
  9. 7
  10. ;

@只能在输入数据“1 2 3”之后要换行输入“4 5 6”才能被识别
@@可以无视这个,因为其关注“input xxx”,可以直接在cards;后输入数据“1 2 3 4 5 6”,系统自动识别为两组数据

参考百度文库:

——————————————————————————

两个都是行控制符(就是SAS阅读你的数据时,在每一行里面的阅读数)

@  表示执行下一个操作时,指针移到下一个记录(也就是下一行)。

@@表示执行下一个操作,指针保持在当前记录(当前行)。

举个例子:(数据录入我使用两种方式,以便于看出@与@@的阅读区别)

 

(1):录入数据时占用一行的空间

  1. data a;
  2. input x y @;(当仅仅使用一个@时)
  3. cards;
  4. 1 2 3 4 2 2 3 5 3 2 1 1 (数据占用一行空间)
  5. ;run;
  6. proc print data=a;
  7. run;

(阅读结果如下)

data a: (此时SAS仅仅读了1次,显然没有读完,就跳到下一行阅读下一个数据,因为下一行没有数据可读,所以就读了一次就完了)

  1. The SAS System 17:52 Saturday, October 27, 2014 23
  2. Obs x y
  3. 1 1 2
  1. data b;
  2. input x y @@;
  3. cards;
  4. 1 2 3 4 2 2 3 5 3 2 1 1 (数据占用一行空间)
  5. ;run;
  6. proc print data=b;
  7. run;

(阅读结果如下)

  1. data b(此时SAS读了6次,显然这次是正确的,因为使用@@时,数据在当前行连续阅读)
  2. The SAS System 17:52 Saturday, October 27, 2014 24
  3. Obs x y
  4. 1 1 2
  5. 2 3 4
  6. 3 2 2
  7. 4 3 5
  8. 5 3 2
  9. 6 1 1

(2):录入数据时占用多行空间

  1. data a; (当仅仅使用一个@时)
  2. input x y @;
  3. cards; 1 2 3 4
  4. 2 2 3 5 (数据占用三行空间)
  5. 3 2 1 1
  6. ;run;
  7. proc print data=a;run;

(SAS阅读情况如下)

  1. data a:(此时SAS仅仅读了3次,显然没有读完,因为每一行没有连续读完,就开始阅读新下一个数据,也就是光标就跳到了下一行)
  2. The SAS System 17:52 Saturday, October 27, 2014 25
  3. Obs x y
  4. 1 1 2
  5. 2 2 2
  6. 3 3 2

                                                                                                      

  1. data b;
  2. input x y @@;
  3. cards;
  4. 1 2 3 4
  5. 2 2 3 5
  6. 3 2 1 1
  7. ;run;
  8. proc print data=b;
  9. run;

(SAS阅读情况如下)

  1. data b;(此时SAS阅读了6次,显然这次阅读的阅读时正确的,因为每一行都是连续读取之后再读取下一记录,也就是跳到下一行)
  2. The SAS System 17:52 Saturday, October 27, 2014 26
  3.  
  4. Obs x y
  5.  
  6. 1 1 2
  7. 2 3 4
  8. 3 2 2
  9. 4 3 5
  10. 5 3 2
  11. 6 1 1

——————————————————————————————————————————

三、数据查看方式:content/data/proc sql三种方式

数据查看也有很多方式,譬如content、data/proc sql包括双击也是一种方式,一共四种方式。

1、content方式

查询数据的内容(summary)  针对一些头文件里面的隐藏数据集,可以用这样的方式看到,类似summary,不过内容没有那么详细。

  1. proc contents data=fv.forever out=class;run;

out代表将查询内容打印出来,并存放在临时逻辑库work之中。

2、data方式

  1. data class/view=class1;
  2. set fv.forever
  3. ;
  4. run;

3、sql方式

  1. proc sql;
  2. create view class2 as
  3. select*from fv.forever;
  4. quit;

每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照)的更多相关文章

  1. MySQL-5.7创建及查看数据库表

    1.创建数据库表的三种语句 创建一个新表: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [tab ...

  2. MySQL-5.7创建及查看数据库

    1.创建数据库语句 create database语句是在MySQL实例上创建一个指定名称的数据库. create schema语句的语义和create database是一样的. 2.语法解析 CR ...

  3. MySQL5.7 创建及查看数据库

    1.创建数据库语句create database语句是在MySQL实例上创建一个指定名称的数据库.create schema语句的语义和create database是一样的. 2.语法解析 CREA ...

  4. 安装好MySQL后就开始学习如何后台创建自己的数据库吧!

    MySQL创建数据库的方式不像SQL Server那样有图形界面,而是使用DOS窗口创建的,接下来就是创建MySQL数据库的具体步骤. ↓↓↓↓↓↓↓↓      ↓↓↓↓↓↓↓↓      ↓↓↓↓ ...

  5. SAS学习笔记41 宏变量存储及间接引用

    Macro Variables存储在“Symbol Table”中.它是由Macro Processor在SAS启动时自动创建并维护的.SAS提供了一张视图来供我们查看Symbol Table中的内容 ...

  6. SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...

  7. mysql数据库的基本操作:创建数据库、查看数据库、修改数据库、删除数据库

    本节相关: 创建数据库 查看数据库 修改数据库 删除数据库 首发时间:2018-02-13 20:47 修改: 2018-04-07:考虑到规范化,将所有语法中“关键字”变成大写;以及因为整理“mys ...

  8. Sql Server之使用T_SQL创建,修改,查看数据库信息

    一.使用Transact_SQL创建数据库 Transact_SQL语法如下:  create database database_name   [ on     [primary]  [<fi ...

  9. MySQL学习笔记(4) - 创建数据库

    1.建立一个简单的数据库 CREATE DATABASE t1: 图中如果未打:号,系统会等待直到用户输入结束符才会之行语句. 2.查看当前服务器下数据库列表 SHOW DATABASES; 必须是D ...

随机推荐

  1. 监控 Linux 性能的 18 个命令行工具[转]

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...

  2. Docker入门之常用命令

    写在前面 细数当前最流行的技术莫过于容器化和人工智能了,而容器化技术能有今天的热度,Docker可谓功不可没. 让我们一起来回顾一下Docker 是什么? 是一种虚拟化技术 能够将应用程序自动部署到容 ...

  3. python 编写简单的setup.py

    学习python也已经有一段时间了,发现python作为脚本语言一个很重要的特点就是简单易用,而且拥有巨多的第三方库,几乎方方面面的库都有,无论你处于哪个行业,想做什么工作,几乎都能找到对应的第三方库 ...

  4. MonogoDB 练习一

    1.解析文件,仅处理 FIELDS 字典中作为键的字段,并返回清理后的值字典列表 需求: 1.根据 FIELDS 字典中的映射更改字典的键 2.删掉"rdf-schema#label&quo ...

  5. Hello 2018

    愈发觉得写技术博客对于自己写作能力的提升会很有帮助,于是在今天终于用Github+Jekyll的方式搭建了自己的博客,从今往后就在这里记录自己在技术上成长的点滴,希望自己的总结和思考也能帮助到其他人. ...

  6. spring boot + vue + element-ui全栈开发入门——开篇

    最近经常看到很多java程序员朋友还在使用Spring 3.x,Spring MVC(struts),JSP.jQuery等这样传统技术.其实,我并不认为这些传统技术不好,而我想表达的是,技术的新旧程 ...

  7. Go笔记-标准库的介绍

    [unsafe]包含了一些打破Go语言“类型安全”的命令,一般的程序中不会被使用,可用在C/C++程序的调用中 [syscall]底层的外部包,提供了操作系统底层调用的基本接口 [os/exec]提供 ...

  8. POJ 2154 Color [Polya 数论]

    和上题一样,只考虑旋转等价,只不过颜色和珠子$1e9$ 一样的式子 $\sum\limits_{i=1}^n m^{gcd(i,n)}$ 然后按$gcd$分类,枚举$n$的约数 如果这个也化不出来我莫 ...

  9. window.location的路径

    1 相对路径 window.location.href='add_affiche.php'; 或 window.location.href='./add_affiche.php'; 2 绝对路径 wi ...

  10. PHP输出打印方法

    PHP这门语言灵活而充满众多的API和用法,然而在这个技术领域里却缺乏一些系统的总结归纳.或许这与PHP语言的诞生方式有关,衍生,快速变化,原始限制等等,诸多因素决定这门语言变得smarty,却没有人 ...