活动介绍

模板过程:创建标记语言标签集

立即解锁
发布时间: 2025-08-30 01:12:43 阅读量: 4 订阅数: 9 AIGC
### 模板过程:创建标记语言标签集 #### 1. 熟悉标签集 在使用模板过程创建标记语言标签集时,有几个关键的语句和操作需要了解。 ##### 1.1 NOTES 语句 NOTES 语句用于提供关于标签集定义的信息。它会成为编译后标签集定义的一部分,可以使用 SOURCE 语句查看。其语法为: ```sas NOTES ’text’; ``` 其中,`text` 是提供关于标签集的信息。 ##### 1.2 END 语句 END 语句用于结束标签集定义,语法很简单: ```sas END; ``` ##### 1.3 列出标签集名称 SAS 提供了一组标签集定义。要获取 SAS 提供的标签集名称列表,以及你创建并存储在 `SASHELP.TMPLMST` 模板存储中的任何标签集,可以提交以下 SAS 语句: ```sas proc template; list tagsets; run; ``` 默认情况下,`PROC TEMPLATE` 会列出 `SASHELP.TMPLMST` 和 `SASUSER.TEMPLAT` 中的标签集。通常,你对 `SASHELP.TMPLMST` 项目存储(SAS 标签集目录所在位置)只有只读访问权限,而 `SASUSER.TEMPLAT` 是默认存储你创建或自定义标签集的项目存储。 ##### 1.4 指定标签集名称 要指定存储在 `SASHELP.TMPLMST` 中的 SAS 标签集,或你创建并存储在 `SASUSER.TEMPLAT` 或任何其他项目存储中的标签集,使用两级名称:`TAGSETS.tagset-name`。例如,`tagsets.chtml` 或 `tagsets.mytagset` 是有效的两级标签集名称。默认情况下,SAS 知道指定的标签集存储在 `SASHELP.TMPLMST` 或 `SASUSER.TEMPLAT` 中。 如果要指定存储在 `SASUSER.TEMPLAT` 以外项目存储中的标签集,需要使用 `ODS PATH` 语句将该项目存储分配给 ODS 搜索路径。 ##### 1.5 查看标签集定义的内容 可以使用 SAS 窗口环境或 TEMPLATE 过程来查看标签集定义的内容。 - **SAS 窗口环境**: 1. 从菜单中选择“View I Results”。 2. 在结果窗口中,选择“Results”文件夹。右键单击并选择“Templates”以打开“Templates”窗口。 3. 双击“Tagsets”以查看该项目存储或目录的内容。 4. 双击你要查看的标签集定义。例如,`CHTML` 标签集定义是 `CHTML` 输出的模板存储。 - **SAS 窗口命令**: 1. 在命令栏中提交以下命令以查看“Templates”窗口: ```sas odstemplates ``` 2. 当你双击一个项目存储(如 `Sashelp.Tmplmst`)时,该项目存储会展开以列出存储 ODS 模板的目录。SAS 提供的模板位于 `Sashelp.Tmplmst` 项目存储中。 3. 要查看 SAS 提供的标签集定义,双击“Tagset”项目存储。 4. 右键单击标签集定义(如 `Rtf`)并选择“Open”。标签集定义将显示在“Template Browser”窗口中。 - **TEMPLATE 过程**: 要查看标签集定义的源代码,使用 `PROC TEMPLATE` 并指定标签集的两级名称。例如,要查看生成 `CHTML` 输出的 SAS 标签集的源代码,提交以下 SAS 语句: ```sas proc template; source tagsets.chtml; ``` 查看 `TAGSETS.CHTML` 的源代码,会发现它由以下部分组成: - 一个 `DEFINE TAGSET` 语句,用于命名标签集定义。 - 事件定义,用于定义写入输出文件的内容。 - 标签集定义属性,如输出类型和换行符。 #### 2. 理解事件 标签集定义通过一系列事件和变量控制输出生成。事件定义了写入输出文件的内容,以下是关于事件的一些关键点: - 事件具有唯一名称。生成 ODS 输出的 SAS 过程使用一组标准事件,你可以在自己的标签集定义中重新定义这些事件来进行自定义。此外,你还可以定义自己的事件。 - `DEFINE EVENT` 语句为事件定义分配名称。 - 事件定义可以包括开始和/或结束部分,用于指定不同的操作。如果事件定义不包括开始或结束部分,则该事件是无状态的,这意味着无论事件如何调用,事件中的所有操作都会执行。如果事件有结束部分,并且结束部分上方有语句,则假定有开始部分。 - 事件定义可以使用 `TRIGGER` 语句执行另一个事件。如果你在事件的开始部分,则触发的任何事件也将运行其开始部分。如果你在结束部分,则触发的事件将运行其结束部分。如果触发的事件没有开始或结束部分,则将运行其拥有的语句。触发器还可以显式请求事件的特定部分。 - 事件可以根据条件执行操作。 - 大多数情况下,事件由 `PUT` 语句、文本和事件变量组成。 以下是一个简单的 HTML 表格输出的事件定义示例: ```sas define event table; start: put "<table>" nl; finish: put "</table>" nl; end; ``` 在这个事件定义中,`DEFINE EVENT` 语句开始事件并将其命名为 `TABLE`。`START` 部分定义了事件的开始部分,`FINISH` 部分定义了事件的结束部分。表格的事件定义需要 `START` 和 `FINISH` 部分,因为 ODS 需要知道如何定义开始和结束。`PUT` 语句指定将标签 `<table>` 和 `</table>` 写入输出文件,并在每个标签后添加换行符。 另一个事件定义示例: ```sas define event data; put "<TD>"; put VALUE; put "</TD>"; end; ``` 这个事件定义不包括开始和结束部分,`PUT` 语句指定将标签 `<TD>` 和 `</TD>` 写入输出文件。此外,使用了事件变量 `VALUE`,以便将来自 SAS 过程或数据集的数据值写入输出文件,并使用 `<TD>` 和 `</TD>` 标签括起来。 #### 3. 理解变量 变量是用于保存数据的编程结构。变量保存分配给它的数据,直到分配新值或程序结束。每个变量都有唯一的名称,并保存处理请求输出的内部信息(ODS 或 XML LIBNAME 引擎使用的元数据)或与输出本身直接相关的信息。例如,变量 `COLCOUNT` 保存输出中的列数,变量 `DATE` 保存日期。 标签集使用的变量可以分为两组:内部生成的和用户创建的。 ##### 3.1 内部生成的变量 内部生成的变量有 3 个逻辑划分: | 变量类型 | 描述 | | ---- | ---- | | 事件变量 | 包括文本、格式和数据值。这些变量可以源自许多地方,如表定义、过程、标题或副标题处理。 | | 样式变量 | 由当前使用的 ODS 样式属性指定。样式变量与其他事件变量的区别在于,你确切知道它们的来源。 | | 动态变量 | 在 SAS 中动态创建。由于它们是动态创建的,其名称或使用方式未知。这些变量是动态的,因为它们不是由 ODS 定义的,而是由诸如 SAS/GRAPH 和 XML LIBNAME 引擎等应用程序定义的。动态变量以前缀 `@` 符号表示,可以使用“DYNAMIC 语句”列出。 | ##### 3.2 用户创建的变量 用户创建的变量有两种类型: | 变量类型 | 描述 | | ---- | ---- | | 内存变量 | 使用 `SET` 语句在 `DEFINE EVENT` 语句中创建。一旦创建,内存变量在所有事件中全局可用。它们一直存在,直到被删除。内存变量以前缀 `$` 符号表示。 | | 流变量 | 与内存变量不同,流变量可以保存非常大量的数据。它们可以保存大量数据,因为随着数据增长,会根据需要将其写入磁盘。打开流变量会将 `put` 语句的所有输出重定向到流,直到关闭它。流变量还可以打开、关闭、刷新、设置和取消设置。 | ##### 3.3 显示事件变量及其值 由于变量表示数据,其值可能存在也可能不存在,这取决于 SAS 过程和作业。例如,某些变量只有在你使用过程选项或样式选项指定它们时才有值。其他变量有值是因为需要内部信息,如输出中的列数。 例如,`TAGSETS.CHTML` 包含事件定义 `COLSPECS`,它使用事件变量 `COLCOUNT` 让 ODS 知道输出中的列数: ```sas define event colspecs; put "<p>" nl "<table"; putq " columns=" COLCOUNT; put " cellpadding=2 border=1>" nl; end; ``` 要确定哪些变量有值以及值是什么,可以使用 `EVENT_MAP` 语句提交 SAS 程序。 #### 4. 创建自己的标签集 ##### 4.1 创建标签集的方法 创建标签集时,使用 `TEMPLATE` 过程定义标签集定义。一般来说,有三种方法可以创建自己的标签集: - 通过继承定义标签集定义。 - 复制现有标签集定义,然后进行修改。 - 定义自己的标签集定义。 ##### 4.2 标签集定义中继承事件 标签集可以相互继承事件。例如,SAS 标签集 `TAGSETS.WMLOLIST` 从 `TAGSETS.WML` 继承了大部分事件,`TAGSETS.IMODE` 从 `TAGSETS.CHTML` 继承了大部分事件。从现有标签集定义继承事件是定义新标签集定义的最简单方法。 要继承事件,标签集定义在 `DEFINE TAGSET` 语句中使用 `PARENT=` 属性指定要继承的标签集名称。当为标签集定义指定父标签集时,父标签集定义中指定的所有标签集选项、属性和语句将用于新定义,除非新定义覆盖它们。也就是说,在新标签集定义中,一个事件可以覆盖父标签集中定义的同名事件的操作。 例如,如果父标签集定义了一个名为 `TABLE` 的事件,你可以在新标签集中重新定义该事件来更改其操作。 ##### 4.3 使用 EVENT_MAP 标签集定义标签集 生成 ODS 输出的 SAS 过程使用一组标准事件和变量。要生成自定义输出,你可以创建具有自定义事件的自己的标签集。但是,为了自定义事件,你必须知道 ODS 使用的事件名称。 一个很好的开始定义自定义标签集的方法是使用 SAS 提供的 `EVENT_MAP` 标签集,以确定哪些事件被触发以及事件使用哪些变量将 SAS 过程的输出发送到输出文件。当你使用 `TAGSETS.EVENT_MAP` 运行 SAS 过程时,ODS 会将 XML 标记写入输出文件,该文件将所有事件名称和变量名称显示为标签。在输出中,标签名称是事件名称,标签属性是这些事件有值的变量。 例如,以下语句运行 `ODS MARKUP` 并指定 `TYPE=EVENT_MAP`,以查看 ODS 对 `PROC PRINT` 输出的各个部分使用了哪些事件和变量: ```sas ods markup type=event_map file=’custom-tagset-filename.xml’; proc print data=sashelp.class; where Height gt 60; run; ods markup close; ``` 在 `EVENT_MAP` 生成的 XML 输出中,你可以看到 `PROC PRINT` 使用了名为 `DOC_HEAD`、`PROC`、`TABLE` 等的事件。`TABLE` 事件使用来自事件变量(如 `STATE`、`CLASS` 和 `TYPE`)的数据。一旦你知道了用于生成输出的事件和变量,就可以定义自己的标签集定义并自定义事件。 例如,你可以重新定义 `TABLE` 事件以产生自己的输出。要定义一个标签集来自定义自己的输出,你可以首先指定 `TAGSETS.EVENT_MAP` 作为父标签集。然后,当你重新定义事件以自定义输出时,它们将替换 `EVENT_MAP` 标签集中定义的默认事件。此外,你可以通过在标签集定义中将默认事件重新定义为空事件来删除其操作。当你对自定义输出满意时,删除 `EVENT_MAP` 继承和空事件,这样输出将仅反映你定义的事件。 需要注意的是,当你首次运行 SAS 过程并指定 `TYPE=EVENT_MAP` 时,还可以生成一个样式表以及主体文件。样式表将告诉你正在使用哪些样式属性。 ##### 4.4 EVENT_MAP 的替代方案 如果你需要其他类型的输出,以下是一些可以用作替代的标签集: - `TEXT_MAP` 生成更多的列表输出。 - `TPL_STYLE_LIST`(生成 HTML)和 `TPL_STYLE_MAP`(生成 XML)。但是,这些标签集仅列出了可能属性的子集。 - `STYLE_POPUP` 生成类似于 `HTMLCSS` 的 HTML,但如果你使用 Internet Explorer,`STYLE_POPUP` 会显示一个窗口,显示你点击的任何项目的解析 ODS 样式定义。 - `STYLE_DISPLAY` 类似于 `STYLE_POPUP`,但生成一个简单的输出页面供你点击。 - `NAMEDHTML` 生成类似于 `STYLE_POPUP` 的 HTML,但所有对象都像使用 `ODS TRACE` 一样被标记。 ##### 4.5 使用 SAS DATA 步函数定义标签集 SAS DATA 步函数对参数执行计算或系统操作并返回一个值。在 Base SAS 软件中,你可以在 DATA 步编程语句、`WHERE` 表达式、宏语言语句、`REPORT` 过程、结构化查询语言(SQL)以及创建自己的标签集时使用 SAS 函数
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

张_伟_杰

人工智能专家
人工智能和大数据领域有超过10年的工作经验,拥有深厚的技术功底,曾先后就职于多家知名科技公司。职业生涯中,曾担任人工智能工程师和数据科学家,负责开发和优化各种人工智能和大数据应用。在人工智能算法和技术,包括机器学习、深度学习、自然语言处理等领域有一定的研究
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

具有多重时滞和不确定参数的CRDNNs的无源性与同步性研究

# 具有多重时滞和不确定参数的 CRDNNs 的无源性与同步性研究 ## 1. 引言 在神经网络的研究领域中,具有多重时滞和不确定参数的连续反应扩散神经网络(CRDNNs)的无源性和同步性是重要的研究课题。无源性能够保证系统的稳定性和能量特性,而同步性则在信息处理、通信等领域有着广泛的应用。本文将深入探讨 CRDNNs 的无源性和同步性相关问题,包括理论分析和数值验证。 ## 2. 无源性判据 ### 2.1 输出严格无源性条件 当满足以下矩阵不等式时,网络(9.17)具有输出严格无源性: \[ \begin{bmatrix} W_6 & \Xi_2 \\ \Xi_2^T & W_7 \e

自适应复杂网络结构中的同步现象解析

# 自适应复杂网络结构中的同步现象解析 ## 1. 引言 在复杂的动力学网络中,同步现象一直是研究的重点。我们将主稳定性方法拓展到由 $N$ 个扩散且自适应耦合的振荡器组成的复杂网络中。通过对自适应耦合相位振荡器这一典型模型的研究,我们发现了由于稳定性岛屿的存在而导致的多簇现象的出现。接下来,我们将深入探讨相关内容。 ## 2. 自适应耦合振荡器网络模型 考虑一个由 $N$ 个扩散且自适应耦合的振荡器组成的网络,其形式如下: \(\dot{x}_i = f (x_i(t)) - \sigma \sum_{j = 1}^{N} a_{ij} \kappa_{ij} G(x_i - x_j)\

OpenVX:跨平台高效编程的秘诀

### OpenVX:跨平台高效编程的秘诀 #### 1. OpenCL 互操作性扩展 OpenCL 互操作性扩展为 OpenVX 内的应用程序和用户算法提供了高效实现的支持,具备以下六个关键特性: - 共享一个通用的 `cl_context` 对象,供 OpenVX 和 OpenCL 应用程序使用。 - 共享一组有序的 `cl_command_queue` 对象,用于 OpenVX 和 OpenCL 应用程序/用户内核之间的协调。 - 允许 OpenCL 应用程序将 `cl_mem` 缓冲区导出到 OpenVX。 - 允许 OpenCL 应用程序从 OpenVX 收回导出的 `cl_mem

HNPU-V1:自适应DNN训练处理器的技术解析与性能评估

### HNPU-V1:自适应DNN训练处理器的技术解析与性能评估 在深度学习领域,DNN(深度神经网络)训练处理器的性能对于提高训练效率和降低能耗至关重要。今天我们要介绍的HNPU - V1就是一款具有创新性的自适应DNN训练处理器,它采用了多种先进技术来提升性能。 #### 1. 稀疏性利用技术 在DNN训练过程中,会出现输入或输出稀疏性的情况。传统的输出零预测方法虽然可以同时利用输入和输出稀疏性,但会带来面积和能量开销。而HNPU - V1采用了独特的稀疏性利用技术。 ##### 1.1 切片级输入跳过(Slice - Level Input Skipping) - **原理**:

语音情感识别:预加重滤波器与清音影响分析

### 语音情感识别:预加重滤波器与清音影响分析 在语音情感识别领域,多种因素会影响识别的准确性和性能。本文将深入探讨预加重滤波器、清音去除等因素对语音情感分类的影响,并通过一系列实验来揭示不同特征向量大小、帧大小等参数在不同数据库中的表现。 #### 1. 清音去除 在语音情感识别中,通常会使用浊音和清音进行情感识别。然而,清音往往与语音信号记录中的噪声或静音区域具有相似的时间和频谱特征。为了探索去除清音后分类阶段的性能,我们使用自相关函数来去除每一帧中的清音。 具体步骤如下: 1. **自相关函数定义**:对于信号 $x(n)$ 从样本 $n$ 开始的一帧,其短时自相关函数定义为 $

利用大数据进行高效机器学习

### 利用大数据进行高效机器学习 #### 1. 集群管理与并行计算基础 在处理大数据时,集群的使用至关重要。当集群任务完成后,终止其派生的进程能释放每个节点占用的资源,使用如下命令: ```R stopCluster(cl1) ``` 对于大规模的大数据问题,还可以进行更复杂的`snow`配置,例如配置Beowulf集群(由多个消费级机器组成的网络)。在学术和行业研究中,若有专用计算集群,`snow`可借助`Rmpi`包访问高性能消息传递接口(MPI)服务器,但这需要网络配置和计算硬件方面的知识。 #### 2. 使用`foreach`和`doParallel`实现并行计算 `fore

网络数据上的无监督机器学习

### 网络数据上的无监督机器学习 在处理图数据时,机器学习(ML)并非必需,但它能带来很大的帮助。不过,ML的定义较为模糊,例如社区检测算法虽能自动识别网络中的社区,可被视为无监督ML,但NetworkX提供的一些方法虽类似却未得到数据科学界同等关注,因为它们未被明确称为图ML。 #### 1. 网络科学方法 在处理图数据时,有很多已掌握的方法可避免使用所谓的图ML: - **社区识别**:可以使用Louvain算法或直接查看连通分量。 - **枢纽节点识别**:使用PageRank算法,无需嵌入。 - **孤立节点识别**:使用`k_corona(0)`,无需ML。 - **训练数据创

计算机视觉中的概率图模型:不完整数据下的贝叶斯网络学习

# 计算机视觉中的概率图模型:不完整数据下的贝叶斯网络学习 在计算机视觉领域,概率图模型是一种强大的工具,可用于处理复杂的概率关系。当数据不完整时,贝叶斯网络(BN)的参数学习和结构学习变得更具挑战性。本文将介绍不完整数据下BN参数学习和结构学习的方法。 ## 1. 不完整数据下的BN参数学习 在不完整数据中,变量 $Z_m$ 可能随机缺失或始终缺失。与完整数据情况类似,不完整数据下的BN参数学习也可通过最大似然法或贝叶斯法实现。 ### 1.1 最大似然估计 最大似然估计(ML)需要通过最大化边际似然来找到BN参数 $\theta = \{\theta_n\}_{n=1}^N$: $$

SSH连接与操作全解析

# SSH 连接与操作全解析 ## 1. SSH 主机密钥概述 当 SSH 客户端首次连接到远程主机时,双方会交换临时公钥,以此对后续通信进行加密,防止信息泄露。客户端在披露更多信息之前,需要确认远程服务器的身份。这是合理的,因为若连接到的是黑客软件,我们肯定不希望泄露用户名和密码。 ### 1.1 公钥基础设施的问题 构建公钥基础设施是解决互联网机器身份验证的一种方法。首先要确定证书颁发机构,将其公钥列表安装到所有浏览器和 SSL 客户端中,然后付费让这些机构验证身份并签署 SSL 证书,最后将证书安装到 Web 服务器上。但从 SSH 的角度看,这种方法存在诸多问题。虽然可以创建内部公

言语节奏与大脑定时模式:探索神经机制与应用

# 言语节奏与大脑定时模式:探索神经机制与应用 ## 1. 大脑的预测性与时间维度 人类大脑是一个具有建设性的器官,它能够生成预测以调节自身功能,并持续适应动态环境。在这个过程中,运动和非运动行为的时间维度正逐渐被视为预测性偏差的关键组成部分。然而,编码、解码和评估时间信息以产生时间感和控制感觉运动定时的神经机制之间的复杂相互作用,仍然大部分是未知的。 ### 1.1 事件的时间与类型维度 个体和环境中的所有状态变化都会产生由类型(“是什么”)和时间(“何时”)定义的事件。为了成功地与不断变化的环境进行交互,人们需要不断适应这些事件的“是什么”和“何时”维度。人类不仅会对事件做出反应,还会