首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【学习】七天搞定SAS(六):宏的编写、程序调错

在SAS各种繁杂的PROC之后,还要来看看MACRO才可以嘛。又不能写函数... SAS中的MACRO:宏编写 MACRO主要是DO和%LET的各种组合,前者负责循环后者负责变量。...我们指定了一个SAS MACRO中的变量flowertype,在执行MACRO的时候他会被自动翻译成标准的SAS代码。这样执行的结果就是: 看到了吧,标题已经被替换了。...SAS MACRO的DEBUG调试 这里就是一些基本的找错技巧了: 避免最常见的语法错误:先写一般的SAS语句,然后去替换需要用到变量的部分。...SAS的报错记录:有MERROR(找不到macro)、SERROR(找不到变量)、MLOGIC(SAS将在日志中输出详细的执行情况)、MPRINT(SAS将在日志中输出翻译出来的SAS代码)、SYMBOLGEN...(SAS将在日志中输出变量当时的赋值)。

4.1K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SAS-编程中的小技巧

    ----Setup~ 1 快捷键(功能键的使用) 今小编这里说的快捷键,并不是通俗意义上的那种CTRl+A、CTRL+C的这种快捷键,而是SAS编程里面的宏功能键(我称“快捷键”)。...输入回车键 02 如何设置 1.先复制代码 2.工具--添加缩写 3.设置缩写(缩写:设置你需要的快捷方式,代码块放入缩写的插入文本中) 4.点确定就好了 小编还是忍不住要来点(zhui)评(shu)一下宏功能机的优劣之处...宏功能键,不仅仅只适用于Macro上,你也可以把长用的代码块,和知识点设置成快捷键,当你输入mean的时候,弹出proc means的结构和各个参数的含义。。好吧~好处真的很多。让小白变大神。...2 打开SAS自动运行Macro 设置打开SAS自动调用你写好的Macro,或者打开SAS自动执行你想执行的代码。...01 看效果 1.预先写好一段代码(sas程序名字:autoexec.sas,并将程序放在你SAS安装路径下,小编此处安装路径B:\SAS\SASFoundation\9.2(32-bit)) 2.做好上述一步聚

    1.7K80

    SAS hash对象,提高编程效率和性能

    SAS hash对象是一种数据结构,它包含了一个数组,用于将一个或多个值与一个键(例如,员工ID)关联起来。SAS hash对象是在数据步骤中创建和使用的,不适用于任何SAS过程。...因此,SAS hash对象有一些语法和作用域的限制,例如不能使用宏变量或函数来定义键或数据变量。 SAS hash对象在数据步骤结束后会自动消失,而PROC SQL会生成一个持久的数据集。...; data two; input id score; datalines; 1 90 2 80 3 70 4 60 ; run; data merge_hash; length name...'); /*定义id为键变量*/ h.defineData('score'); /*定义score为数据变量*/ h.defineDone(); /*完成hash对象的定义*/ end...; set one; /*读取one数据集*/ rc=h.find(); /*在hash对象中查找与id相匹配的score*/ output; /*输出结果数据集*/ run; 总结 SAS

    72820

    【SAS Says】基础篇:SAS宏初步

    特别说明:本节【SAS Says】基础篇:SAS宏初步,用的是数说君学习《The little SAS book》时的中文笔记,我们认为这是打基础的最好选择。...排除宏错误的bug ---- 【SAS Says】基础篇:SAS宏初步 1. 宏概述 宏以前被认为是经验老道的SAS程序员使用的高级技术。但现在新手也能够了解一些。...幸运的是,宏的基本功能不是那么难理解。本章介绍的最普遍使用的SAS宏语言的特征。 宏处理器 标准SAS程序中,提交程序后,SAS就编译并立即执行。...in New Zealand”; 例子 一份关于花店销售的数据,变量为顾客ID,销售日期,花的种类,数量: ?...MLOGIC|NOMLOGIC SAS会在日志里打印关于执行宏的详细信息。 MPRINT|NOMPRINT SAS在日志里打印由宏产生的标准SAS代码。

    3.1K41

    SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程

    SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程 1....一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) 结构化查询语言(SQL) SAS宏语言 2....宏触发:% 是一个宏语句或宏函数;&是一个宏变量引用 3. 局部宏变量:一般程序定义的为宏变量。...宏函数,是指能够通过在SAS宏中定义应用DATA步的函数,最常用的通配函数是%SYSFUNC函数。...SAS中SQL过程具有以下功能: 产生汇总数据,创建SAS数据集。 从数据字典和数据视图中检索数据。 横向合并数据集。 纵向合并数据集。 创建视图和索引。 更新、添加、删除等操作。 创建宏变量。

    2.2K80

    SAS︱操作语句(if、do、select、retain、array)、宏语言、统计量、运算符号

    SAS中的一些常见的符号。运算符是一种符号 ①比较算符 ②算术算符 ③逻辑算符 ④其它算符 运算符号 比较算符 含义 #NAME?...SAS系统引用数组等价于引用构成数组的那一组变量。...SAS宏的一些特性: 1)可以降低重复性任务的工作量,便于重复调用。...1、sas宏变量——可复用的值 一个可以广泛复用,一直保存在缓存中的变量内容。 一种在程序(这里一般是指一个宏程序)外定义,则在整个SAS任何地方都可以被调用。...(如果一个程序内部定义有宏变量变成全局变量,则需要使用%global)(这句话参考自: SAS 定义宏的三种用法) (1)%let %let a=XXX; %put &a; %put here is &

    7.8K21

    SAS-新规试行下诞生的程序

    本文将分享一段SAS小程序,自动修改逻辑库下字符变量长度为真实长度的最大值。...5月份的征求意见稿中,“不包含外部程序调用,尤其应避免大型宏程序的嵌套”已经修改成了“避免外部(宏)程序调用”。...递交程序代码需要txt格式,实现方法很多,小编实现的方法是SAS,喜欢其他方法实现的请忽略。参考小编历史文章(点击下方可跳转)。 SAS-批量修改.sas后缀成.txt 数据说明文件 ?...其他可能用到的 大概还能用到SAS编程的地方也就是变量超过200个字符的拆分和XPT的转化等。XPT的转化程序SAS自带内置宏里面也是有的,不过感觉自带内置宏不太靠谱。...建议大家还是使用SAS中xport引擎方式去生成。查看自带内置宏方法可见小编历史推文。 SAS-如何找出数据集超长变量及观测,并自动进行变量的拆分...

    2.1K74

    C++ rtti vs 宏 - 如何优雅的获取类型T的name或ID

    RTTI的实现 如何获取一个类型T的name或者唯一ID, 对于这个问题, 最常规的方式应该是借助C++的rtti了, 比如如ponder中所使用的方式: namespace ponder { namespace..., 但对于这个值的稳定性和有效性都依赖于库底层的实现, 当一些特定的场合需要跨App进行ID标识的时候, 它基本就没啥用了, 你只能退回字符串名称的方式去处理相关逻辑了. 2....FUNCSIG系统宏的实现 那么有没有一种实现是不依赖rtti, 又能很好的适配constexpr的呢? 答案是肯定的....通过constexpr, 很好的解决了编译期获取类型T的唯一字符名称和64位hash的问题, 而且不依赖rtti, 比较优雅的解决了T->name和T->id的问题....(), 至于hash(), 看自己的使用场合, 可以灵活选用name_detail()或者name_pretty()了, 以上实现在VS2019和GCC8.3上测试过, clang的话需要处理一下, 宏跟

    2.3K10

    【SAS Says】基础篇:7. SAS宏初步

    SAS宏初步 7.1 宏概述 宏以前被认为是经验老道的SAS程序员使用的高级技术。但现在新手也能够了解一些。幸运的是,宏的基本功能不是那么难理解。本章介绍的最普遍使用的SAS宏语言的特征。...宏处理器 标准SAS程序中,提交程序后,SAS就编译并立即执行。...但宏语句多了一步,在提交之后,SAS会将宏语句传送到宏处理器上,将其转变为SAS标准代码,通常叫做“变换代码”(meta-programming.)...in New Zealand”; 例子 一份关于花店销售的数据,变量为顾客ID,销售日期,花的种类,数量: ?...MLOGIC|NOMLOGIC SAS会在日志里打印关于执行宏的详细信息。 MPRINT|NOMPRINT SAS在日志里打印由宏产生的标准SAS代码。

    3.2K60

    SAS-编程中的小技巧

    1 快捷键(功能键的使用) 今小编这里说的快捷键,并不是通俗意义上的那种CTRl+A、CTRL+C的这种快捷键,而是SAS编程里面的宏功能键(我称“快捷键”)。...4.点确定就好了 小编还是忍不住要来点(zhui)评(shu)一下宏功能机的优劣之处:先说优处,优处:当你写了几十上百个Macro的时候,每个macro的参数你都背的下来么,即使背下来了,每次你都能不敲错代码么...宏功能键,不仅仅只适用于Macro上,你也可以把长用的代码块,和知识点设置成快捷键,当你输入mean的时候,弹出proc means的结构和各个参数的含义。。好吧~好处真的很多。让小白变大神。...2 打开SAS自动运行Macro 设置打开SAS自动调用你写好的Macro,或者打开SAS自动执行你想执行的代码。...01 看效果 1.预先写好一段代码(sas程序名字:autoexec.sas,并将程序放在你SAS安装路径下,小编此处安装路径B:\SAS\SASFoundation\9.2(32-bit)) ?

    1.5K30

    SAS-Macro 中的那些语句(四)

    这还是继续前面的基础说,今天来说一说宏中数值运算、几个常见函数等... 宏数值运算 大家都知道SAS数据集中的变量是分数值型、字符型的。那么SAS的宏变量是否分数值型变量和字符型变量呢?...*&mvar2.); %eval进行运算的宏变量有小数点是会有Error的...那么来看看日志。 ? %sysfunc 前几天小编推送了一大堆SAS里面的基础函数,那么那些函数在宏是否可以用呢?...宏中的函数 那么宏中的函数必须用%sysfunc()包裹起来么,不是的。SAS还将几个常用的函数直接变成了宏函数,都有那几个常用的函数呢?...不过为了引出另外的一个关键词,还是浅谈一下...毕竟,一般公司在笔试应届毕业生SAS programmer、或者应届毕业生转正考试的时候经常会遇到宏变量解析的笔试题...那么久来看看几个简单的例子 %let...%superq() 解析括号内作为一个整体的宏变量, 这个关键词可以起到解析宏变量的作用,当然此处还没有完全的体现出%superq在SAS中的真正的应用.... data _null_; call

    4.2K22

    SAS-免费的描述性统计程序自动化创建

    如果这样宏程序需要写的很完善,那么就是一个非常大型嵌套宏。由于最新的指导原则要求不能调用外部宏和嵌套宏,为了提高工作效率、减少错误率等,于是本文诞生了。...原理 以前是直接调用宏程序生成结果,现在可以通过调用宏程序直接生成不含外部宏、大型宏及嵌套宏的SAS代码,通过运行SAS代码再来生成结果。...当然,你也可能没有用宏去做表,都是用分析过程步,对于这种情况,小编建议你可以借鉴本文编写适用于自己的宏程序,避免重复工作。(程序下载链接在文末) 宏参数 下面来看看小编的宏参数。...: http://www.sas-pharma.com/sas-pharma/pgmModel/ 点击文章底部“在看”后,再点击“阅读原文”即可下载本文所有代码与数据,或前往https://www.sas-pharma.com...本文宏使用的环境是SAS9.4(简体中文),如果其他环境下需要使用,也可邮箱/微信联系我。

    1.9K21

    Import File(.CSV) to SAS获取文件夹、文件名称

    今天给大家Share的是关于CSV导入SAS、以及filename获取文件夹名称、文件名称 ----Setup~ Import .CSV to SAS CSV...导入到SAS中,如何自动把第一列的内容做为变量的标签呢,达到Excel的Import的效果。...接下来我看我给大家Share一个简单的CSV2SAS的Macro程序...假如大家有更好方法,欢迎留言私信指点。。...csv replace; getnames=No;/*是否获取变量名称*/ datarow=1; /*从第一行记录开始读取*/ guessingrows=500;/*读入前500行 避免读入时候找出数据截断...当有大量外部文件需要导入到SAS中,我们如果一个文件一个文件的输入文件名导入SAS是一件很没劲的重复的无趣的事情...而且也可能出错...利用SAS语言可以直接在SAS中获取文件名称到数据集中,在通过赋值给

    2.9K20

    玩转地球: 如何利用SAS绘制现代化地图(附代码)

    SAS 语言中提供了能够绘制地图的能力。 考虑到 SAS 并不是地图数据的生产者,SAS 只是利用数据。...在早些年,尽管SAS提供的地图数据来源多种多样,但SAS花了大量的时间精力来保证用户地图数据的精确性。...下面,我们举个最简单的例子,来说明如何在SAS 里绘制地图: proc gmap map=mapsgfk.world data=mapsgfk.world; id id; choro id...此时需要利用系统自带的宏 %annomac 和 %maplabel 来生成描述数据数据。另外,需要对中国台湾岛的描述数据进行特殊处理,统一到大中华地图中来。...图1:SAS绘制空白中国省图 图2:SAS绘制的中国各省的卫星地图 图3:SAS 绘制的带有卫星云图的中国分省图 总结: SAS GMAP 提供 2D (choropleth) 和 3D (block,

    3.8K50

    SAS Macro小技巧—获取文件路径

    今天给大家Share一下SAS Macro获取文件路径的技巧! 获取路径有哪些用途呢: 如果路径都用宏变量表示,当文件夹的物理路径发生变化时, 都还是可以直接运行程序!不需要修改成程序~ 上代码!...\macro\; %put NOTE:PGMLIB =&PGMLIB.; %put NOTE:Path =&Path.; %inc "&PGMLIB.\*.sas"; %mend; %getpath...为SAS程序所在路径。...(如上代码可以直接复用) SAS 创建文件夹:如下代码: 这样做的的好处是啥呢,每次运行数据或者数据集想实现自动存下来,这个时候就可以用SAS自动创建文件夹的方式来存储。..._varstemp12 ; quit; data RAWDATA2; set RAWDATA1; &varlist1.; run; 如上: 讲语句都封装在宏变量里面,直接调用宏变量,就可以执行了

    4.6K31

    SAS-给公众号做一个秩和检验

    嗯,这是我建立的文件夹,数据、文档、日志、宏、输出、程序、源数据都有自己的夹子。如果有兴趣的朋友,可以在公众号对话框回复:文件夹1,既可以下载本文涉及的全部程序以及数据以及macro程序包!...(sysver)来获取你SAS的版本号,小编电脑上装了SAS9.2与SAS9.4,因此将宏分别执行成2个版本宏包(执行后的宏包不能夸版本),所以小编这里利用这个宏变量自动获取当前SAS软件的版本号,然后进行判断进而选择正确的宏包...嗯,下载文件夹后,解压压缩包,不改变压缩包内部文件以及文件夹,在目录下的PGM\Table\Table.sas程序打开是可以直接运行的。...接下来就来转置一下: proc transpose data=temp3 out=temp3_1 (rename=(_NAME_=Temp0)); var n mean std median min max; ID...这里小编就用了直接写好的宏进行输出。 首先,我先导入输出RTF中的标题、备注等信息,前面可以看到小编输出的rtf里面是带有备注等信息的,其实就是通过这里控制。

    1.5K20
    领券