SAS的基本使用介绍1(数据集建立与输入输出格式)

2023-11-15

SAS的基本使用

提前说明:本软件安装较为复杂,而且所占空间很大

运行helloworld

Data a;                                                                                     
File print;                                                                      
Put 'hello world!';                                                                                   
Run;                                                                                                                                    
                                                                                                                                        
Proc print;                                                                                           
Run;

SAS数据集的建立

使用SAS首先需要建立数据集–DATA步

1.直接输入

数据集操作的基本结构框架

data 数据集名;
input 变量1 变量2 ......;
*input 用于输入变量
cards;(datalines;)
数据

;
*数据输入结束,必须换行打分号
*cards/datalines用来引领数据输入

数据与变量相对应,SAS使用单词cards,因为历史上需要打卡输入,现在新增datalines

*举例
data e;
input id name $ provience $;
cards;
12 liwei shanxi
;
proc print;
run;

注意:
字符串需要在变量名字后面加上$
注意在变量名中不能使用中文
不区分大小写

2.数据库导入,通过数据库、数据录入软件


永久数据集建立

数据库建立后,自动保存在资源管理器的逻辑库里,work里存放刚建的数据库,其他存放SAS自身数据,work是专门留给用户存放数据使用,但关闭之后会消失是临时数据。

数据存入逻辑库文件夹

在数据集前加上文件夹名

data sasuser.e;

引入新建的文件夹路径:

方法一:界面菜单操作
  1. 先建立文件夹
  2. 在菜单点击“新建逻辑库”,链接新建文件夹路径,资源管理器里会新增该逻辑库
  3. 同上在数据集前面加上逻辑库名

注意界面方式选择界面新建文件夹路径可能不全,需要小心

方法二:命令操作
libname 逻辑库文件夹名 "文件夹路径名称"
方法三:直接使用data语句指定一个路径和SAS数据集名
data "文件夹路径\数据集名称"

由于在资源管理库里面没有自主命名,会生成wc开头的默认文件夹

变量输入格式

20210918 有可能是读出日期或数字,由输入格式决定

数值型变量的输入

格式:w.d。w表示数值的总位数或宽度(包括小数点),d表示数值的小数部分的位数,即使没有小数,点号也一定要加上

input 变量1 输入格式1
data fh;
input x 4.2;
cards;
12
2.1
15.6
23.46
;
proc print;
run;

>>0.12 2.10 15.60 23.40

读几位已经确定,然后再保留后两位所以是23.40
对整数保留小数,SAS直接降做小数处理
注意小数点占一位

通常数值输入不加输入格式,避免出错

字符型变量的输入格式

格式 $w.
其中 $必须有,w表示字节数(一个汉字占两个字节),SAS默认读取8位

日期型变量输入

单独只有输入时运行会出问题,还需要输出格式辅助

下列是常见的几种日期型输入格式,其中w表示日期宽度,宽度值不能超过32,具体写多少要根据录入的数据宽度而定

在这里插入图片描述
想要具体了解SAS日期型变量的输入格式可参见:
SAS官方关于日期变量的文件


特殊输入符

  1. :冒号的作用
data fh;
input city $16. DDD$;
cards;
陕西省西安市 029
陕西省汉中市洋县 0916
;
proc print;
run;
>>出现格式混乱

分析:由于变量指定了宽度导致出现问题,SAS就不再以默认的空格作为变量区分的标志了,而是按照指定的宽度来识别变量

解决:在变量和输入格式之间加上一个冒号,命令SAS,如果要读取下一个变量需要满足以下两个条件:要么遇见空格,要么按宽度读取

data fh;
input city: $16. DDD$;
cards;
陕西省西安市 029
陕西省汉中市洋县 0916
;
proc print;
run;
  1. &作用

如果变量观测值本身有空格,在变量后面加上&

data fh;
input city: $16. DDD$;
cards;
陕西省 西安市 029
陕西省 汉中市洋县 0916
;
proc print;
run;
>>输出错误

解决:首先,两个观测值非等长,故在指定宽度的同时需要加上冒号
然后,在变量后面加上&符号,并在编程输入时,将同行前后两个不同变量值之间加上2个或者更多空格
分析:&的作用在于把2个或者更多的空格作为分隔符。

data fh;
input city&: $20. DDD$;
cards;
陕西省 西安市  029
陕西省 汉中市洋县  0916
;
proc print;
run;

输出格式

format 变量1 格式1 变量2 格式2;
* 在input与cards之间

数值型变量输出格式

w.d,commaw.d和percentw.d

w.d和输入使用相同

commaw.d的作用是将数值的整数部分自右向左每三位用逗号隔开,当数值位数较多时,这是比较标准的表示方式。

percentw.d的作用是将数据显示为百分比的形式,它自动将变量值乘以100,并加上%。

%需要占三个字节

data e3;
input a1 a2 a3;
format a1 6.2 a2 comma13.2 a3 percent8.2;
cards;
50 1054387 0.123 
13 97490321 0.18
;
proc print;
run;

格式:w.d。w表示数值的总位数或宽度(包括小数点),d表示数值的小数部分的位数,即使没有小数,点号也一定要加上

字符型变量

$w.
输出与输入格式相同,但不同在于输入格式中默认读取8个字符,但输出没有8个字符的限制

日期输出

data dat; 
input d1: yymmdd10. d2: yymmdd10.  d3: yymmdd10. d4:yymmdd10. d5: yymmdd10.; 

format d1 yymmdd10. d2 yymmdds8.  d3 yymmddp10. d4 yymmddb8.  d5 yymmddc8.;  
cards; 
20.06.16 200616 20200616 200616 200616 
; 
proc print ; 
run;


在这里插入图片描述

输出格式 在 yymmdd后面+字母

d 表示以‘ - ’ 形式显示日期;
s 表示以‘ / ’ 形式显示日期;
p 表示以‘ . ’ 形式显示日期;
b 表示以‘ 空格 ’ 形式显示日期;
c 表示以‘ : ’ 形式显示日期;
n 表示以‘ 无连接符 ’ 形式显示日期;
字母不可以加在 date7.或date7. 的格式 !!
SAS默认使用 ‘ - ’ 连接年月日。

输入与输出之间的关系

如果指定输入格式,SAS就按照这种格式读取数据,会真正改变输入值
而输出格式不会真正改变输入值,只是按指令格式显示而已。
例如:X值为xian,指定输入格式为2,则X值就是xi;如果X的输入值为xian,但输出格式为2,那么X的值仍为xian,但输出是xi

data ww; 
input x$ y$2.;  /* y 是输入格式定义 2.  */
format x$2.; 	/* x 是输出格式定义 2.  */
x1 = x+1;  		/* x1 本质还是 1100 +1 = 1101 */
y1 = y+1; 		/* y1 输入格式改变2. y=11,y1=11+1=12 */

cards; 
1100 1100 
; 
proc print; 
run;
  • SAS 会自动把字符型转为数值型参与运算,并在日志窗口有显示

资料来源:课程-SAS编程基础与实例分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAS的基本使用介绍1(数据集建立与输入输出格式) 的相关文章

  • Pendulum详解1——Pendulum库入门指南 - 时光的艺术

    写在开头 时间 是编程世界中不可或缺的元素 无论是事件调度 数据分析 还是用户界面的显示 时间都扮演着关键的角色 然而 在Python的标准库 datetime 中 我们经常面临繁琐的操作和限制 为了摆脱这些束缚 我们引入了一个更加强大和灵
  • 实现智能化运维的关键驱动力,你知道可观测性工具吗

    可观测性是指根据系统产生的数据评估内部系统状态的能力 对于IT运维团队来说 可观测性工具是非常重要的 通过这些工具 IT团队可以同时观察或深入了解IT基础架构中不同应用程序和资源的健康状况和状态 从而主动检测异常 分析问题并解决问题 可观测
  • 将 CSV 中的所有列导入为字符?

    简单的问题 PROC IMPORT OUT braw address DATAFILE path address data csv DBMS csv REPLACE GETNAMES YES RUN 该语句将创建数据集列作为字符or数字取决
  • 使用 R 的过程 GLM (SAS)

    我需要测试应该在奶牛遗传评估模型中包含哪些效应 在 SAS 中我会使用 proc GLM SAS 代码为 data paula1 set paula0 proc glm class year herd season model milk y
  • 删除SAS中所有观测值都不包含特定值的组

    我想删除其观察值中没有 NUM 14 的整个组 所以就像这样 原始数据 ID NUM 1 14 1 12 1 10 2 13 2 11 2 10 3 14 3 10 由于 ID 2 中都不包含 NUM 14 因此我删除了组 2 它应该看起来
  • 如何根据 SAS Enterprise Guide / PROC SQL 中具有相同前缀的列中的值创建具有适当前缀的 2 个新列?

    我在 SAS Enterprise Guide 中有如下表 ID COUNT COL A COUNT COL B SUM COL A SUM COL B 111 10 10 320 120 222 15 80 500 500 333 1 5
  • 选择数据步骤中具有最大值的观测值

    Table old date 05DEC2016 a 28NOV2016 b 22DEC2016 c 23JAN2017 d 12JAN2017 e 09JAN2017 f 25DEC2016 g 我需要创建一个新表 data new se
  • Python爬虫实战:IP代理池助你突破限制,高效采集数据

    当今互联网环境中 为了应对反爬虫 匿名访问或绕过某些地域限制等需求 IP代理池成为了一种常用的解决方案 IP代理池是一个包含多个可用代理IP地址的集合 可以通过该代理池随机选择可用IP地址来进行网络请求 IP代理池是一组可用的代理IP地址
  • 以批处理模式运行时提示输入 SAS ODBC 连接密码

    由于各种原因 我更喜欢尽可能以批处理模式运行 SAS 程序 出于安全原因 我希望每当与 Teredata 仓库建立 ODBC 连接时 SAS 都会提示我输入密码 我可以同时拥有这两个东西吗 以下代码在从 SAS 交互运行时工作正常 但在批量
  • SAS 替换所有列中的字符

    我有一个 SAS 数据集 必须导出到 csv 文件 我有以下两个相互矛盾的要求 我必须使用分号作为 csv 文件中的分隔符 一些字符变量是从公式中手动输入的字符串 因此它们可能包含分号 我对上述问题的解决方案是转义分号或用逗号替换它 我怎样
  • 在双边案例交叉设计中创建控制日期

    我计划研究空气污染对急诊室就诊的影响 并打算使用双边病例交叉设计 对于每个病例 医院就诊 我想创建 4 个控制日期 就诊前后 7 天和 14 天 例如 如果一个人于 2012 年 9 月 10 日访问诊所 我的控制日期将为 8 月 27 日
  • 如何使用 proc Compare 更新数据集

    我想用proc compare每天更新数据集 work HAVE1 Date Key Var1 Var2 01Aug2013 K1 a 2 01Aug2013 K2 a 3 02Aug2013 K1 b 4 work HAVE2 Date
  • SAS 和 Excel 中百分位数的不同结果

    我正在尝试获取 SAS 中的百分位数 我在 Excel 中得到了百分位数 我期望在 SAS 中也得到相同的结果 但是当我在 SAS 中得到百分位数时 它与 excel 中的不同 我正在使用下面的示例数据 1 2 3 4 5 6 7 8 9
  • 宏中的 SAS 宏

    我有一个关于 macro 的问题 我可以在另一个 宏中设置 宏吗 简短的例子 情况的 图片 macro Tier 1 do Iter 1 to i macro Tier 2 proc sql noprint select 1 Iter in
  • 如何读取从 Access 导入的 SAS 数据集(不符合 SAS 命名约定)

    我已使用 Libname 将 Access DB 导入 SAS 库名称 accdb c mydata base accdb DB 中的所有表现在都在 accdb 库中 但 Access DB 中的表名称与 SAS 数据集命名约定不匹配 我的
  • 在新实例中打开 SAS 程序

    我正在尝试找出一种在单击时默认在增强编辑器的新实例中打开 SAS 程序的方法 问题是asked https stackoverflow com questions 4654876 open sas program in new window
  • SAS 随机采样

    在 SAS 中 我创建了一个程序 该程序将从数据集中随机获取 50 个观测值 并计算观测值的平均值 data subset drop i samplesize samplesize 50 obsleft totobs do i 1 to s
  • Pandas 在读取 SAS 文件时数据类型正确失败

    我有一个SAS数据集 http www principlesofeconometrics com sas cars sas7bdat当我运行它时 我在 SAS 上得到以下输出 我还有以下 Python 代码 它获取 sas7bdat 文件并
  • 重新排列 sas 数据集中的变量 - 按字母顺序排列

    我有大约 500 列的数据集 我想按字母顺序重新排列所有变量 除了在 set 语句之前使用保留语句之外 我还能以其他方式做到这一点吗 您可以动态生成变量名称列表 并使用以下命令创建新数据集PROC SQL proc sql select n
  • 在新窗口中打开 SAS 程序

    目前 当您在 Windows 中双击 SAS 文件时 它将在您已打开的现有 SAS 会话中打开它 有没有办法让它在窗口中单击时会启动一个新的 SAS 窗口 据我所知 SAS 是一个所谓的 单实例 应用程序 因此它的默认行为是在现有会话中打开

随机推荐

  • Java异常-Exception

    一 异常介绍 基本概念 Java语言中 将程序执行中发生的不正常情况称为 异常 注 开发过程中的语法错误和逻辑错误不是异常 执行过程中所发生的异常事件可分为两大类 Error 错误 Java虚拟机无法解决的严重问题 如 JVM系统内部错误
  • 2023-05-18 题目

    2023 05 18 题目 1 String 字符串 String 不是基本数据类型 且是不能被继承的 因为string类被final修饰 源码 public final class String implements java io Se
  • [FreeRTOS入门学习笔记]定时器

    定时器的使用步骤 1 定义一个handle xTimerCreate创建 2 启动定时器 在Task1中调用 通过队列通知守护任务来执行定时器任务 要再config头文件中定义守护任务相关配置 虽然定时器是在task1中启动 但是定时器的任
  • qt实现opengl播放yuv视频

    qt使用opengl播放yuv视频 文章目录 qt使用opengl播放yuv视频 toc 1 实现效果 2 pro文件 3 xvideowidget h 4 xvideowidget cpp 更多精彩内容 个人内容分类汇总 1 实现效果 2
  • VS2022编译GDAL库报错: fatal error U1050: PROJ_INCLUDE should be defined. PROJ >= 6 is a required depende

    目录 场景复现 定位问题 解决方案 踩过的坑 场景复现 使用VS2022的Native Tools command prompt for 2022工具编译GDAL库时 报 fatal error U1050 PROJ INCLUDE sho
  • RTSP视频边缘计算网关EasyNVR在5G时代有什么运用价值?

    5G和互联网的发展在近几年一直被按下了加速键 物联网正在成为主流 毋庸置疑 云计算为越来越多智能设备的连接提供了基础 给我们生活带来了极大便利 而边缘计算是云计算物联当中的一个关键应用 当我们在考虑云计算带来的数据过度集中 信息传输堵塞问题
  • 2018年最好用的5个python网站开发框架

    python作为解释型脚本语言 是一种通用的编程语言 由于python社区拥有大量的库文件 框架和其他的一些实用工具 我们可以用python完成各种各样的任务 另外 由于python的代码构成和结构就像英语句子一样自然 这种语言的学习曲线也
  • Spring(三)-IOC使用

    目录 基于XML管理bean 入门案例 引入依赖 创建类HelloWorld 创建Spring的配置文件 在Spring的配置文件中配置bean 创建测试类测试 思路 获取bean 方式一 根据id获取 方式二 根据类型获取 方式三 根据i
  • 延迟渲染到最终结果------1,2,分配渲染目标和初始化窗口(大象无形11.3.1)

    版本不同 我这里延迟渲染是FDeferredShadingSceneRenderer类 即函数 void FDeferredShadingSceneRenderer Render FRHICommandListImmediate RHICm
  • 经过两年努力,我终于进入腾讯(PCG事业群4面总结)

    前言 为什么要尽量让自己进大厂 如果毕业就进了大厂 那你将得到业内大牛的指导 以及随处可见的技术碰撞 新技术的跟进也是非常快的 在这样的环境中 你的技术成长自然是非常快的 如果自己足够努力 用不了三年 你可能也将会跟他们水平差不多 所以 明
  • c语言编译过程

    C语言的编译过程一般分为四个步骤 预处理 编译 汇编和链接 预处理 Preprocessing 预处理器会处理源代码中以 开头的预处理指令 例如 include和 define等 将它们替换为相应的内容 同时 还会删除注释和空格 将多行代码
  • qt-事件循环系统

    Qt中 如果创建的console程序 使用的是QCoreApplication对象 如果创建的是GUI程序 使用的是QApplication对象 而QApplication 继承自 QGUIApplication 最终继承QCoreAppl
  • golang的cms

    golang的cms 2019 03 06 12 53 by 轩脉刃 阅读 评论 收藏 编辑 golang的cms 说说cms cms 内容管理系统 是建站利器 它的本质是为了快速建站 cms本质是一个后台服务站 使用这个后台 能很快搭建一
  • 做区块链卡牌游戏有什么好处?

    区块链卡牌游戏是一种基于区块链技术的创新性游戏形式 它将传统的卡牌游戏与区块链技术相结合 实现了去中心化 数字化资产的交易和收集 这种新型游戏形式正逐渐在游戏行业引起了广泛的关注和热潮 本文将深入探讨区块链卡牌游戏的定义 特点以及其在未来的
  • 自己撸一个阅读类休闲app

    其实自己早就想撸一个app 因为自己一直没什么机会可以做那种好看的app 对我而言好看就是能安装在手机上 然后看着舒服的 所以也对自己所学进行一次整合 然后再次扬帆 感谢那些贡献开源api的大神 也感谢gank 主要使用的开眼的api ga
  • KafkaTemplate是如何发送消息的?

    Kafka使用KafkaTemplate发送消息 需要先实例化bean 配置如下
  • 如何在Eclipse中查看JDK以及Java框架的源码

    对于Java程序员来说 有时候是需要查看JDK或者一些Java框架的源码来分析问题的 而默认情况下 你按住Ctrl 再点击 Java本身的类库 例如ArrayList 是无法查看源码的 那么如何在Eclipse中查看JDK以及Java框架的
  • 如何计算 Node.js GC 负载

    在 Node js 中 我们关注的比较的是 CPU 负载 但是在有 GC 的语言中 GC 负载也是需要关注的一个指标 因为 GC 过高会影响我们应用的性能 本文介绍关于 GC 负载的一些内容 如何获取 GC 耗时 操作系统本身会计算每隔线程
  • 【caffe跑试验遇到错误:Check failed: error == cudaSuccess (2 vs. 0) out of memory】

    刚开始跑caffe试验 老是遇见各种错误 今天又遇见 span style font size 18px color ff0000 I1214 09 32 19 428040 11425 net cpp 748 Ignoring sourc
  • SAS的基本使用介绍1(数据集建立与输入输出格式)

    SAS的基本使用 提前说明 本软件安装较为复杂 而且所占空间很大 运行helloworld Data a File print Put hello world