使用SAS 9.4的基础编程
SAS认证专家考试指南
1 考试概述
SAS认证专家:使用SAS 9.4的基础编程考试旨在为希望展示其SAS编程语言基础知识的个人而设计。
考试代码: A00-231
时长: 2小时
题目: 60-65道选择题
及格分数: 68%
前提条件: 无
2 考试内容领域
2.1 1. 访问和创建数据结构 (30%)
2.1.1 导入数据
- 从各种来源导入数据(文本文件、Excel文件等)
- 使用PROC IMPORT过程
- 理解数据集选项
/* 示例:导入CSV文件 */
PROC IMPORT DATAFILE="/path/to/data.csv"
OUT=work.mydata
DBMS=CSV
REPLACE;
GETNAMES=YES;
RUN;
2.1.2 创建和修改SAS数据集
- 创建新变量
- 使用赋值语句
- 使用WHERE和IF语句筛选观测
- 使用LENGTH、FORMAT和INFORMAT语句
/* 示例:创建新变量 */
DATA work.enhanced;
SET work.mydata;
/* 创建新变量 */
total_sales = quantity * price;
/* 筛选数据 */
WHERE region = 'East';
/* 格式化变量 */
FORMAT sales_date DATE9.;
RUN;
2.2 2. 管理数据 (25%)
2.2.1 调查和汇总数据
- 使用PROC CONTENTS检查数据结构
- 使用PROC PRINT显示数据
- 使用PROC MEANS获取汇总统计
- 使用PROC FREQ获取频率分布
/* 示例:数据调查 */
PROC CONTENTS DATA=work.mydata;
RUN;
PROC MEANS DATA=work.mydata N MEAN STD MIN MAX;
VAR sales revenue;
RUN;
PROC FREQ DATA=work.mydata;
TABLES region product;
RUN;
2.2.2 合并SAS数据集
- 使用SET语句连接数据集
- 交错数据集
- 使用MERGE语句合并数据集
- 理解一对一、一对多和多对多合并
/* 示例:合并数据集 */
PROC SORT DATA=work.sales;
BY customer_id;
RUN;
PROC SORT DATA=work.customers;
BY customer_id;
RUN;
DATA work.combined;
MERGE work.sales(IN=a) work.customers(IN=b);
BY customer_id;
IF a AND b; /* 内连接 */
RUN;
2.3 3. 错误处理 (10%)
2.3.1 识别和纠正语法错误
- 理解SAS日志消息
- 识别语法错误
- 使用调试技术
/* 要避免的常见语法错误 */
/* 缺少分号 */
DATA work.test
SET work.mydata; /* 错误:DATA后缺少分号 */
RUN;
/* 引号不匹配 */
DATA work.test;
SET work.mydata;
WHERE name = "John; /* 错误:引号不匹配 */
RUN;
/* 无效的变量名 */
DATA work.test;
SET work.mydata;
1stplace = rank; /* 错误:变量名不能以数字开头 */
RUN;
2.4 4. 为分析准备数据 (15%)
2.4.1 创建格式
- 使用PROC FORMAT创建用户定义的格式
- 将格式应用于变量
/* 示例:创建自定义格式 */
PROC FORMAT;
VALUE agefmt
0-17 = '儿童'
18-64 = '成人'
65-HIGH = '老年人';
VALUE $regfmt
'N', 'S', 'E', 'W' = '主要方向'
'NE', 'SE', 'NW', 'SW' = '次要方向';
RUN;
DATA work.formatted;
SET work.mydata;
FORMAT age agefmt. region $regfmt.;
RUN;
2.4.2 操作数据
- 使用函数操作数据
- 字符函数:SUBSTR、SCAN、UPCASE、LOWCASE、COMPRESS
- 数值函数:SUM、MEAN、MIN、MAX、ROUND
- 日期函数:TODAY、DATE、YEAR、MONTH、DAY
/* 示例:使用函数 */
DATA work.manipulated;
SET work.mydata;
/* 字符函数 */
last_name = SCAN(full_name, -1, ' ');
email_upper = UPCASE(email);
/* 数值函数 */
average_sales = MEAN(q1_sales, q2_sales, q3_sales, q4_sales);
/* 日期函数 */
current_date = TODAY();
birth_year = YEAR(birth_date);
age = INTCK('YEAR', birth_date, current_date);
RUN;
2.5 5. 导出数据 (10%)
2.5.1 将数据导出到外部文件
- 使用PROC EXPORT
- 创建各种输出格式
/* 示例:导出数据 */
PROC EXPORT DATA=work.mydata
OUTFILE="/path/to/output.csv"
DBMS=CSV
REPLACE;
RUN;
/* 导出到Excel */
PROC EXPORT DATA=work.mydata
OUTFILE="/path/to/output.xlsx"
DBMS=XLSX
REPLACE;
RUN;
2.6 6. 生成报告 (10%)
2.6.1 使用过程生成报告
- PROC PRINT用于详细报告
- PROC REPORT用于自定义报告
- PROC TABULATE用于汇总表
/* 示例:创建报告 */
PROC PRINT DATA=work.mydata;
VAR name department salary;
WHERE salary > 50000;
RUN;
PROC REPORT DATA=work.mydata;
COLUMN region product sales;
DEFINE region / GROUP;
DEFINE product / GROUP;
DEFINE sales / ANALYSIS SUM;
RUN;
3 学习资源
3.1 SAS官方资源
- SAS Programming 1: Essentials - SAS官方培训课程
- SAS Certification Prep Guide: Base Programming for SAS 9 - 官方学习指南
- SAS文档 - 免费在线参考
3.2 练习技巧
- 设置SAS环境
- 下载SAS University Edition(免费)
- 或使用SAS OnDemand for Academics
- 定期练习
- 每天编写代码
- 完成练习
- 查看SAS日志中的错误
- 关注重点领域
- 数据操作(30%)
- 数据管理(25%)
- 这两个领域占考试的55%
- 理解,而非死记硬背
- 专注于概念,而不仅仅是语法
- 理解代码为什么有效,而不仅仅是如何有效
4 常见陷阱
- 不检查SAS日志 - 始终查看日志中的警告和错误
- 误解合并逻辑 - 练习不同类型的合并
- 日期处理不正确 - 记住SAS日期是数值型
- 格式与输入格式混淆 - 格式显示数据,输入格式读取数据
5 下一步
完成基础编程认证后: