SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照)
一、逻辑库、数据集、数据字典
数据字典>逻辑库>数据集
逻辑库=工作空间,存储四类内容,test是数据集文件,views是视图(相当于R里面的views点击查看),formats代表文件,sasmacr代表目录内容。
数据集,包括数据文件+SAS视图,可以像R中双击获取数据结构图表,不过这样效率较低,可以使用其他方法,譬如数据字典的方式describe view,详细内容见三、数据查看。
数据字典,是当年进程中所有内容的逻辑库、数据表的一个平铺、列出来。所以,在全局检索上十分有效。我觉得这个非常有用,不过貌似网上对其的定义比较少。
- libname fv "F:\SAS\SAS 9.4 space"; /*fv是数据库名字*/
- data fv.forever; /* #forever代表在fv下的forever数据集*/
- Input x y z;
- Cards;
- 1 2 3
- 4 5 6
- ;
- run;
code解读:
libname建立逻辑库,相当于R中的workspace中的一个文件夹;
data代表数据表格,data.frame;
与R数据输入不同的是,数据之间不是用逗号,而是空格来进行分割。
1、关于libname
如果,没有libname步骤,直接,data,那么就默认存放在SAS中的默认逻辑库之中,默认逻辑库名字叫“work”。
- 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 |
- /*数据字典把当前SAS环境中的所有内容进行汇总归类到这个里面,方便检索*/
- proc sql flow=10;
- title2 'do the columns have formats,informats,or labels';
- title3 'dictionary.columns';
- /*#所有表的列变量*/
- create table colinf as
- select name,type,length,label,format,informat
- /*#变量名称*/
- from dictionary.columns
- where libname='SASHELP' and memname='CLASS';
- /*#注意要大写 */
打开explorer window,在SASHELP这个library下,以V开头的视图实际上是Dictionary table内容的复制。如
proc sql;describe view sashelp.voption;quit;
可以看到voption这个视图的内容来自dictionary.options。 而对于View,除了SQL,直接用data步或proc步都可以访问。如
- data test2;
- set sashelp.vcolumn;
- where libname="WORK" and memname="TEST";
- run;
或者
proc contents data=sashelp.voption;
run;或者在command栏输入viewtable sashelp.voption。
——————————————————————————————————————————
二、SAS的数据导入与其他平台接入方式
SAS获取数据的几个方式:外部数据导入、passthrough方式、import方式、input方式。大多通过libname来调入。
1、数据库外部接入
- /*#数据库,外部接入*/
- libname hsdb db2 user=xxuser password="xxxx" datasrc=datadb;
- /* #在逻辑库hsdb中,db2代表数据库名称,datasrc代表SQL中的数据集名称*/
还有RODBC访问。
- /*通过RODBC访问 需要设置很多内容*/
- libname odb odbc user=*** password=*** datasrc=test;
- libname hsdb odbc noprompt="uid=xxxuser;pwd=xxxxx;dsn=datadb;" schema=hsuser
2、外部导入,spss数据
- /*SPSS数据集,外部接入*/
- libname sps spss '';
3、oracle数据集,外部接入
- /*oracle数据集,外部接入*/
- libname oralib oracle user=xxx pw=xxx path dbmssrv schema=educ;
4、input方式导入数据
input里面有很多小符号,譬如@@ 和@的区别,$&。不过,也正是这些符号,让我觉得... 导个数据也忒费劲了...不过,这个也是数据输入中最复杂的问题了。。
关键就在这指针问题上,
@代表指针还在这行,只能罩着下一个input,如果没有两个input,那么跟没有@一样,直接跳到下一行;接下来一个有,则相当于指针在这行;
@@代表指针一直在同一行;
没有@,代表指针跳到下一行。
"$",表示字符型变量,&代表数值型。
- data test;
- infile cards ;
- input x @; /*单个@,能H住,有效期到下一个input语句*/
- input y; /*没有@,H不住,下一个input语句会去读新的一行*/
- input z @@; /*两个@,H住没问题,有效期延长到Data步下一圈*/
- cards;
- 1 2 3
- 4 5 6
- 7
- ;
@只能在输入数据“1 2 3”之后要换行输入“4 5 6”才能被识别
@@可以无视这个,因为其关注“input xxx”,可以直接在cards;后输入数据“1 2 3 4 5 6”,系统自动识别为两组数据
参考百度文库:
——————————————————————————
两个都是行控制符(就是SAS阅读你的数据时,在每一行里面的阅读数)
@ 表示执行下一个操作时,指针移到下一个记录(也就是下一行)。
@@表示执行下一个操作,指针保持在当前记录(当前行)。
举个例子:(数据录入我使用两种方式,以便于看出@与@@的阅读区别)
(1):录入数据时占用一行的空间
- data a;
- input x y @;(当仅仅使用一个@时)
- cards;
- 1 2 3 4 2 2 3 5 3 2 1 1 (数据占用一行空间)
- ;run;
- proc print data=a;
- run;
(阅读结果如下)
data a: (此时SAS仅仅读了1次,显然没有读完,就跳到下一行阅读下一个数据,因为下一行没有数据可读,所以就读了一次就完了)
- The SAS System 17:52 Saturday, October 27, 2014 23
- Obs x y
- 1 1 2
- data b;
- input x y @@;
- cards;
- 1 2 3 4 2 2 3 5 3 2 1 1 (数据占用一行空间)
- ;run;
- proc print data=b;
- run;
(阅读结果如下)
- data b(此时SAS读了6次,显然这次是正确的,因为使用@@时,数据在当前行连续阅读)
- The SAS System 17:52 Saturday, October 27, 2014 24
- Obs x y
- 1 1 2
- 2 3 4
- 3 2 2
- 4 3 5
- 5 3 2
- 6 1 1
(2):录入数据时占用多行空间
- data a; (当仅仅使用一个@时)
- input x y @;
- cards; 1 2 3 4
- 2 2 3 5 (数据占用三行空间)
- 3 2 1 1
- ;run;
- proc print data=a;run;
(SAS阅读情况如下)
- data a:(此时SAS仅仅读了3次,显然没有读完,因为每一行没有连续读完,就开始阅读新下一个数据,也就是光标就跳到了下一行)
- The SAS System 17:52 Saturday, October 27, 2014 25
- Obs x y
- 1 1 2
- 2 2 2
- 3 3 2
- data b;
- input x y @@;
- cards;
- 1 2 3 4
- 2 2 3 5
- 3 2 1 1
- ;run;
- proc print data=b;
- run;
(SAS阅读情况如下)
- data b;(此时SAS阅读了6次,显然这次阅读的阅读时正确的,因为每一行都是连续读取之后再读取下一记录,也就是跳到下一行)
- The SAS System 17:52 Saturday, October 27, 2014 26
- Obs x y
- 1 1 2
- 2 3 4
- 3 2 2
- 4 3 5
- 5 3 2
- 6 1 1
——————————————————————————————————————————
三、数据查看方式:content/data/proc sql三种方式
数据查看也有很多方式,譬如content、data/proc sql包括双击也是一种方式,一共四种方式。
1、content方式
查询数据的内容(summary) 针对一些头文件里面的隐藏数据集,可以用这样的方式看到,类似summary,不过内容没有那么详细。
- proc contents data=fv.forever out=class;run;
out代表将查询内容打印出来,并存放在临时逻辑库work之中。
2、data方式
- data class/view=class1;
- set fv.forever
- ;
- run;
3、sql方式
- proc sql;
- create view class2 as
- select*from fv.forever;
- quit;
SAS学习︱逻辑库、数据集创建与查看、数据库链接(SAS与R的code对照)相关推荐
- mongodb数据库显示obj_MongoDB创建和查看数据库
MongoDB 将 BSON 文档(即数据记录)存储在集合中,数据库包含文档集合.在 MongoDB 里面存在数据库的概念,但没有模式,保存数据的结构是 BSON 结构,只不过在进行一些数据处理的时候 ...
- plsql 客户端字符集_plsql查看数据库字符集
oracle字符乱码问题的解决 今天开发人员说在表字段后添加注释出现乱码,但其他开发人员添加注释无此原因,于是判断是其客户端字符集设置问题. 出现乱码的注释如图 解决方法 1 查看客户端字符集 SQL ...
- MySQL数据库操作-查看数据库 (SHOW DATABASES)
数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,并且数据库的名称都是有实际意义的,这样就可以清晰的看出每个数据库用来存放什么数据. 在 MySQL数据库中存在系统数据库和自定义 ...
- Oracle数据库中的同义词,数据库链接和序列
目录 1.同义词 (1)可视化方法创建同义词 (2)命令方式创建同义词 (3)删除同义词 2.数据库链接 (1)可视化方式创建 (2)使用命令方式 (3)为远程数据库的表创建同义词 (4)删除数据库链 ...
- oracle包同义词报错,Oracle——04同义词与数据库链接
1.同义词: 在分布式数据库环境中,为了识别一个数据库对象,必须规定主机名.服务器名.对象的拥有者和对象名.这无疑增加了访问者的访问难度.为了给不同的用户使用数据库对象时提供一个简单的.唯一标识数据库 ...
- java连接oracle设置超时,数据库链接在Oracle 11g上超时
尝试在同一服务器上的两个数据库之间创建数据库链接时,我确实遇到了Oracle数据库11g的问题 . 我正在使用SQL Developer 4.1.3.20,我使用的查询如下所示: CREATE DAT ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理...
SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...
- SAS学习笔记1——基础知识(库、PDV、变量选择、观测值排序、创建新变量
SAS学习笔记1--基础知识 1.逻辑库.临时库.永久库 2.数据步 2.1数据步语法 2.2 数据步的编译和执行过程 2.3变量的选择 2.3.1 keep和drop语句 2.4变量的重命名rena ...
最新文章
- 面试造飞机系列:用心整理的HashMap面试题,以后都不用担心了
- python乘法口诀代码-浅析一句python代码成生九九乘法表
- CentOS 7.3镜像挂载搭建本地yum源
- 使用JSON Viewer直观查看JSON数据
- java基础覆盖——知识库搭建-1
- 第二章 ASP.NET MVC (控制器向视图传递值(一))
- python做什么模型_用python做模型
- Opencv+opencv_contrib安装
- JavaScript---轮播图片完整代码
- 几个容易中的计算机类核心期刊,几个较容易发表管理类文章的核心期刊(转)...
- 互联网计算机远程建立连接怎么回事,qq远程协助一直正在建立连接?最全分析解决方法送上!...
- nandflash oob解析
- Comparable
- Appium+python自动化(六)- 连接模拟器并启动淘宝APP(超详解)
- 什么是pptp,什么是vps?两者有何区别?
- ibatis mysql存储过程_分步详解 如何在iBatis中调用存储过程
- 微信h5支付“网站域名ICP备案主体与商户号主体不一致”的解决方法,H5微信支付 授权函下载
- 国家级贫困县摘帽情况分省分年统计(832个)
- 服务器系统磁盘分区,服务器磁盘分区教程
- 三星被指盗取FinFET芯片专利技术 将被起诉
热门文章
- [渝粤教育] 苏州工艺美术职业技术学院 PPT美化设计 参考 资料
- 【渝粤教育】国家开放大学2018年秋季 2508T学前儿童语言教育 参考试题
- 【渝粤教育】广东开放大学 建筑工程施工 形成性考核 (58)
- 【渝粤题库】陕西师范大学200681C语言程序设计 作业(高起专、高起本)
- 997西方行政学说 (2)
- 【NBIoT无线模块DTU数传电台】串口服务器RS232/RS485端口工业路由信号传输
- linux 下对u盘分区吗,linux对中毒u盘分区和格式化
- excel数据命令导入mysql_如何将EXCEL数据导入MYSQL
- 归一化、标准化和正则化
- 建议把英语改成选修的计算机老师,越来越多的人建议高中将英语作为选修课,而非必修课,您认同吗?...