SAS 面试题

2025年3月17日 | 阅读 15 分钟

以下是 SAS 面试中经常被问到的 SAS 面试题列表

1) SAS 是什么?

SAS 是 Statistical Analytics System 的缩写,由 SAS Institute 开发。它是领先的集成软件产品集,用于高级分析、预测分析、多元统计分析、数据管理和商业智能。SAS 包含一个图形化的点选解决方案,使其用户界面易于使用且顺畅。因此,SAS 为非技术用户提供了易于使用、用户友好的平台,并通过 SAS 语言增加了高级选项。


2) SAS 有哪些特点?

SAS 是最佳的分析平台之一,具有多种多样的特点。以下是 SAS 的几个主要特点:

分析: SAS 被认为是各种商业产品和服务的领先分析平台之一。

数据访问和管理: SAS 还允许用户将其用作 DBMS(数据库管理系统)软件。

商业解决方案: SAS 包含用于执行商业分析的解决方案。这些商业分析还可以帮助公司构建正确的商业产品。

报告和图形: SAS 允许用户以不同格式生成分析报告,例如列表、摘要和图形报告。

可视化: SAS 使用户能够以图表形式可视化报告,这些图表可以包括简单的散点图、条形图或其他复杂的 PAGE 分类面板。

SAS Interview questions

3) 为什么人们更喜欢在市场上可用的其他数据分析工具中选择 SAS?

SAS 有许多替代方案,但人们最喜欢使用 SAS。原因是它比市场上其他数据分析工具具有更独特的特点。人们选择 SAS 的原因如下:

易于学习: SAS 易于学习,因为它概念简单。它允许用户使用 PROC SQL 等选项,这使他们的工作变得更加轻松。此选项主要源自 SQL,因此了解 SQL 的用户在处理 SAS 时具有一定的优势。

图形能力: SAS 包含功能强大的图形能力。因此,用户可以通过稍加学习快速上手并开始自定义绘图。

数据处理能力: 在数据处理能力方面,SAS 被认为远优于其他领先的工具和语言(如 Python、R 等)。当处理大量数据时,它是最佳平台选择。此外,它最适合并行计算。

工具的先进性: SAS 会频繁更新,这些更新在一个控制良好的环境中设计、开发和测试。另一方面,Python 和 R 可以公开贡献,因此最新开发中出现错误的几率更高。

就业前景: 在就业机会方面,SAS 是全球市场的主要领导者之一。根据一些报告,SAS 在印度企业工作中占据了大约 70% 的数据分析市场份额。


4) 列出 SAS 框架的一些主要功能。

SAS 框架具有以下基本功能:

访问: SAS 框架的主要功能之一是数据可访问性。这意味着可以轻松地从不同来源访问数据,例如原始数据库、Excel 文件、Oracle 数据库和 SAS 数据集等。

管理: 数据管理是 SAS 框架的另一个重要功能。这意味着可以轻松管理从各种来源访问的数据。为了管理数据,可以执行多种功能,如创建变量、验证数据、清理数据、创建子集数据等。

分析: 数据被访问和管理后,就可以对其进行分析。我们可以执行一些基本分析(例如 - 平均值、频率等)或复杂分析(例如 - 预测、回归等)。

呈现: 分析后的数据可以以图形报告、列表形式和整体汇总见解的形式存储或保存。生成的这些统计数据可以进一步打印或在线发布。此外,这些统计数据可以写入数据文件。

SAS Interview questions

5) SAS 中有多少种数据类型?

SAS 中有两种数据类型:“数字”“字符”。此外,日期也被视为字符;但是,SAS 提供了隐式函数来处理日期。


6) 列出 SAS 的一些主要功能。

以下是 SAS 的主要功能:

  • 业务规划
  • 数据仓库
  • 统计分析
  • 数据管理和项目管理
  • 质量管理
  • 信息检索
  • 运筹学和决策支持

7) SAS 编程的基本组成部分有哪些?

SAS 编程主要使用三个组件,即:

  • 变量
  • 数据集
  • 报表

8) 编写 SAS 程序时应遵循哪些基本语法规则?

要编写 SAS 程序,我们可以使用“编辑器”窗口。程序由多个语句组成,这些语句具有适当的语法。这些语句按顺序排列,以便 SAS 执行所需的功能。

以下列出了编写 SAS 程序时应遵循的一些基本语法规则:

  • 每个语句末尾都必须包含一个分号 (;)。
  • 分号用作分隔符。这意味着我们可以使用分号分隔单行中的多个语句。
  • SAS 中的语句不区分大小写。如果语句前有额外的空格,它们会自动删除。
  • SAS 有两个不同的选项用于在语句中插入注释,即:
    1. 注释可以包含在星号 (*) 和分号 (;) 之间。一行以星号开头,以分号结尾。
    2. 插入注释的另一种方法是将它包含在斜杠和星号 (/*) 以及星号和斜杠 (*/) 之间。

9) 什么是 PDV?列出 PDV 的一些功能。

PDV 是“程序数据向量”的缩写。它通常被定义为 SAS 用于构建数据集的内存区域。PDV 在 SAS 中被视为一个逻辑概念。

PDV 的一些主要功能如下:

  • PDV 包含两个自动变量,即 "_N_""_ERROR_"。第一个变量显示正在执行的数据步的计数。而第二个变量则告知执行期间出现的错误。
  • PDV 有助于创建数据库,该数据库在任何给定时间点包含一个观测值。
  • PDV 有助于在编译时创建输入缓冲区。这些输入缓冲区用于保留来自任何外部文件的数据。

10) 如何解释 SAS 数据集?

SAS 数据集通常被定义为 SAS 程序中用于分析的数据。它通常被称为 SAS 数据表。

数据集中组织数据主要有两种方式:

  • 行(观测值)
  • 列(变量)

11) 在编写 SAS 程序时,为什么我们要使用 output 语句?

'output' 语句主要用于将汇总统计量保存到 SAS 数据集中。保存的信息可用于根据需求生成定制报告。

此外,我们还可以使用 output 语句中的不同选项来执行以下操作:

  • 存储整个过程的历史数据。
  • 定义输出数据集的名称。
  • 选择要保存在输出数据集中的所需统计量。
  • 计算并保存无法自动计算的百分位数。

12) 为什么我们在 SAS 程序中使用 Stop 语句?

'stop' 语句主要用于任何 SAS 程序,以立即停止当前的数据处理。语句的处理将在相应数据步结束后恢复。


13) 在您看来,从现有数据集读取数据与从外部文件读取数据的主要区别是什么?

从现有数据集读取数据时,SAS 会将变量的值从一个观测值保留到另一个相应的观测值。此外,从外部文件读取数据时,SAS 不会保留值。在这种情况下,SAS 只读取观测值。如果需要,必须声明变量的值。这是从现有数据集读取数据与从外部文件读取数据的主要区别。


14) 解释 SAS 自动将字符值转换为数值值的情况。

可以使用一个简单的例子来说明 SAS 何时不会自动将字符值转换为数值值。假设有一个名为“PayRate”的变量,其值以美元符号 ($) 开头。在这种情况下,SAS 无法将“PayRate”的值转换为数值,因为美元符号阻止了该过程的完成。每当 SAS 尝试自动转换值时,美元符号都会阻止整个过程。结果,值不会转换为数值。

因此,建议在进行转换的程序中使用 INPUT 和 PUT 函数。


15) 比较 SAS BI 和 SAP BO。

SAS BI 和 SAP BO 的比较如下表所示:

属性SAS BISAP BO
分析易于使用的分析平台。预测分析平台。
部署原因支持与各种数据源的快速数据集成功能。支持具有用户友好界面的高级可视化。
即席分析平均数优秀
呈现平均数优秀
移动 BI优秀
应用连接 BI 和分析以提供企业级数据。使用前端套件提供排序、查看和分析 BI 数据的特性。

16) 解释 BY 组处理。

在 SAS 中,BY 组处理是基于变量处理索引、有序或分组数据的方法。BY 语句应用于 BY 组处理以完成该过程。


17) INPUT 和 INFILE 在 SAS 中有什么区别?

INPUT 语句用于指定 SAS 编程变量,而 INFILE 语句用于指定包含数据的外部文件。

INPUT 语句的语法

INFILE 语句的语法


18) 在 set 语句和 data 语句中使用 drop= 数据集选项有什么显著区别?

如果需要处理特定变量但不想在新的数据集中显示它们,可以在 data 语句中使用 drop= 数据集选项。

当我们既不想处理特定变量也不想在新的数据集中显示它们时,可以在 set 语句中使用 drop= 数据集选项。


19) 在 SAS 的参考下定义 data step。

SAS 中的 Data step 是一种 SAS 数据集,包含数据和“数据字典”。数据字典的主要功能是存储所有变量的信息及其属性。


20) SAS Informats 的术语是如何定义的?还列出用于放置 SAS Informats 的不同类别。

SAS Informat 是一组指令,用于指示 SAS 如何将数据读入 SAS 变量。这些 Informats 主要用于从外部文件(也称为文本文件、平面文件、顺序文件或 ASCII 文件)读取或输入数据。

主要有三种不同类别的类别用于放置 SAS Informats,即:

  • 数字 Informats:INFORMAT w.d
  • 字符 Informats:$INFORMATw
  • 日期/时间 Informats:INFORMAT w.

21) 如何区分 SAS Format 和 SAS Informat?

SAS Format 和 SAS Informat 的主要区别如下表所示:

SAS FormatSAS Informat
它用于指示 SAS 如何显示变量中的值。它用于指示 SAS 如何从变量读取数据。
Formats 主要用于写入数据。Informats 主要用于从外部文件读取或检索输入数据。

22) 在 SAS 程序中用于执行排序的命令是什么?

我们可以使用 PROC SORT 命令在 SAS 程序中执行排序。此命令适用于程序中的任意数量的变量。PROC SORT 命令作用于数据集。这意味着该命令会创建一个新的已排序数据集,并保持原始数据集不变。

下面的语法显示了在 SAS 中使用 PROC SORT 命令:

排序过程可用于升序和降序。根据所需排序顺序的要求,在 BY 语句中添加一个额外的关键字。我们可以添加 'ASCENDING' 或 'DESCENDING' 关键字来执行必要的任务。

例如


23) 区分 NODUP 和 NODUPKEY 选项。

当涉及到从 SAS 表中删除重复值时,PROC SORT 主要有两种选项可用于执行此操作:

  • NODUP
  • NODUPKEY

我们可以通过下表区分这两个选项:

NODUPNODUPKEY
它用于比较数据集中的所有变量。它仅用于比较当前数据集中的 BY 变量。
它用于查找并删除重复或重复的观测值。它用于删除 BY 语句中定义的变量值的选项。
下面的语法显示了在 PROC SORT 中使用 NODUP 选项:
PROC SORT DATA=readin NODUP;
BY variable name;
RUN;
下面的语法显示了在 PROC SORT 中使用 NODUPKEY 选项:
PROC SORT DATA=readin NODUPKEY;
BY variable name;
RUN;

24) PROC MEANS 和 PROC SUMMARY 有什么区别?

只有在使用 BY 语句时,PROC MEANS 才会为子组生成统计量,并且在用于之前,输入数据已按 BY 变量排序(使用 PROC SORT)。

另一方面,PROC SUMMARY 会自动生成子组统计量,并在一次运行中提供所有信息,而无需对数据集按变量排序并反复运行 PROC MEANS。但是,除非我们应用 OUTPUT 语句创建新数据集并使用 PROC PRINT 查看完整的计算统计量,否则 PROC SUMMARY 不会提供任何输出信息。


25) PROC print 和 PROC contents 在 SAS 中的作用是什么?

在 SAS 中,PROC print 的主要作用是确保正确读取数据集中的数据。另一方面,PROC contents 显示有关数据集的信息。


26) 在 SAS 的上下文中定义 DATA_NULL_。

DATA_NULL_ 是一种不创建或生成任何附加数据集的数据步。当需要创建宏变量时,它很有用。此外,它还可以用于在没有数据集的情况下写入输出。


27) 我们可以使用哪些函数将字符变量转换为数值变量,以及将数值变量转换为字符变量?

在使用 SAS 时,有许多任务需要我们将字符变量转换为数值变量,以及将数值变量转换为字符变量。主要有两种不同的函数用于执行这些转换:

PUT(): 此函数用于将数值变量转换为字符变量。当需要创建一个具有不同名称的新变量时,PUT() 函数很有用。在这里,需要有一个与源变量相同的源格式类型。

例如

INPUT(): 此函数用于将字符变量转换为数值变量。与 PUT() 类似,当创建具有不同名称的新变量时,INPUT() 函数也很有用。在这里,源变量类型必须始终是字符变量。

例如


28) _CHARACTER_ 和 _NUMERIC_ 的作用是什么?

_CHARACTER_ 指的是当前在现有数据步中定义的所有字符变量。下面的语句用于在 PROC MEANS 中指定所有字符变量:

另一方面,_NUMERIC_ 指的是已经在现有数据集中定义的所有数值变量。下面的语句用于在 PROC MEANS 中指定所有数值变量:


29) 用于在数据集中包含或排除任何特定变量的命令是什么?

主要有两种命令用于在数据集中包含或排除任何特定变量:它们是:

DROP: 我们可以指定 DROP 语句变量来删除或排除它。的数据步。

KEEP: 我们可以指定 KEEP 语句中的变量来保留或包含它。的数据步。

此外,还可以使用一些数据集选项来完成此目的。


30) 提及一些用于 SAS 数据清理的字符函数。

以下是一些用于 SAS 数据清理的主要字符函数:

TRIM(str): 使用此函数是为了删除字符串末尾的空格。

COMPRESS(char_string): 使用此函数是为了删除字符串中的空格和其他所需字符。

UPCASE(char_string): 使用此函数是为了将指定字符串中的所有字符转换为大写。

LOWCASE(char_string): 使用此函数是为了将指定字符串中的所有字符转换为小写。

COMPBL(str): 使用此函数是为了删除字符串中的多个空格并将它们转换为单个空格。


31) 在 SAS 中将日志保存到外部文件的命令是什么?

PROC PRINTTO 命令用于在 SAS 中将日志保存到外部文件。此命令的语法如下所示:

例如

执行此操作时,将在 C:\Users\tpointtech\Downloads\ 位置创建一个名为 'LOG-FILE' 的新文本文件。


32) 为什么我们在编写 SAS 程序时使用 SUBSTR 函数?

SUBSTR 函数是 SAS 的有用函数之一,主要用于需要从字符变量中提取子字符串的情况。如果已经定义了起始位置和长度,则使用此函数来提取字符字符串。

下面的语法显示了在 SAS 中使用 SUBSTR 函数:


33) 我们可以使用哪些方法在 SAS 中创建宏变量?

SAS 允许用户使用几种不同的方法来创建宏变量。但是,以下是五种最常用的方法:

  • 使用宏参数
  • 使用 %DO 语句(迭代)
  • 使用 %LET 语句
  • 使用 CALL SYMPUTX 例程
  • 使用 PROC SQL 中的 INTO

34) 用于调试 SAS 宏的一些最常用选项是什么?

以下是用于跟踪宏代码以及宏生成的 SAS 代码的最常用选项:

  • MLOGIC
  • SYMBOLGEN
  • MPRINT

只能通过 SAS 日志访问这些选项生成的消息。


35) SYMGET 和 SYMPUT 的主要区别是什么?

在 SAS 中,SYMGET 的主要功能是将宏变量的值检索到数据集中。而另一方面,SYMPUT 的主要功能是将数据集的值存储在宏变量中。


36) PROC SQL 的工作过程是怎样的?解释主要步骤。

SAS 编程中的 PROC SQL 被认为是执行所有观测值的同步过程。在 PROC SQL 的工作中执行以下步骤:

  • SAS 首先扫描所有 SQL 过程语句,并确保没有语法错误,如缺少分号或使用了无效的语句。
  • SQL 优化器会扫描语句中的所有可用查询,并进一步决定应如何执行 SQL 查询以缩短运行时间并提高整体性能。
  • 如果 FROM 语句中存在表,它将被加载到数据引擎中。因此,它们可以在内存中轻松快速地访问。
  • 接下来,执行代码和其他可用计算。
  • 结果,最终表在内存中创建。
  • 最后,最终表被传输到 SQL 语句中指定的输出表中。

37) 计算 SAS 中两个日期之间总间隔的最常用方法是什么?

我们可以使用 INTCK 函数来计算 SAS 中两个日期之间的总间隔。

下面的语法显示了 INTCK 函数的使用:


38) 删除重复观测值的方法有哪些?

在 SAS 中删除重复观测值主要有三种方法:

  • 通过在过程中使用 SQL 查询
  • 通过清理数据
  • 通过在过程中使用 NODUPS 选项

39) SAS 允许的最大数据集大小是多少?

总观测值数量完全取决于系统的容量。根据系统存储和处理能力,可以有任意数量的观测值。

在 SAS 9.1 版本之前,支持有限,数据集最多只能包含 32,767 个变量。但是,SAS 9.1 或更高版本支持使用 SAS 数据集中的最大可能变量,这取决于系统的资源。


40) 人们在编写 SAS 程序时常犯的一些错误有哪些?

在编写 SAS 程序时,人们会犯一些常见的错误,尤其是在他们是初学者时。最常见的错误如下:

  • SAS 中的每个语句都必须用分号 (;) 结束。但是,大多数人在某些时候会忘记使用它。这是 SAS 编程中最常见的错误。
  • 提交程序后未检查日志。
  • 未使用正确的调试方法。
  • 由于未使用正确的方式或未能实施必要的注释而导致注释错误。