1 添加课程材料指南

1.1 文件组织

课程材料应放在 fundamentals/ 目录下,使用数字前缀便于排序:

fundamentals/
├── 00-setup-sas-jupyter-zh.qmd          # 配置指南
├── 01-course-overview-zh.qmd            # 课程概览
├── 02-data-reading-lesson-zh.qmd        # 第2周:课程讲义
├── 02-data-reading-practice.ipynb       # 第2周:练习notebook
├── 02-data-reading-solution.ipynb       # 第2周:答案
├── 03-data-manipulation-lesson-zh.qmd   # 第3周:课程讲义
├── 03-data-manipulation-practice.ipynb  # 第3周:练习
└── ...

1.2 文件命名规范

1.2.1 课程讲义 (.qmd 文件)

  • 格式: {编号}-{主题}-lesson-zh.qmd
  • 示例: 03-data-manipulation-lesson-zh.qmd
  • 用途: 理论内容、概念解释、示例代码

1.2.2 练习 Notebook (.ipynb 文件)

  • 格式: {编号}-{主题}-practice.ipynb
  • 示例: 03-data-manipulation-practice.ipynb
  • 用途: 学生动手练习、包含题目和代码框架

1.2.3 答案 Notebook (.ipynb 文件)

  • 格式: {编号}-{主题}-solution.ipynb
  • 示例: 03-data-manipulation-solution.ipynb
  • 用途: 完整答案和详细解释

1.3 创建新的课程讲义 (.qmd)

  1. 复制模板或创建新文件
  2. 添加 YAML 前置内容:
---
title: "数据处理基础"
subtitle: "DATA步与条件逻辑"
date: "2026-01-15"
categories: [课程, 数据处理]
---
  1. 编写内容,可以包含 SAS 代码块:
## 创建新变量

```sas
data new_dataset;
    set old_dataset;
    new_var = old_var * 2;
run;
```

1.4 创建新的练习 Notebook (.ipynb)

1.4.1 方法1:在 VS Code 中创建

  1. 右键点击 fundamentals/ 文件夹
  2. 选择 “New File”
  3. 输入文件名:03-your-topic-practice.ipynb
  4. 打开文件后,点击右上角选择内核
  5. 选择 “SAS” 内核

1.4.2 方法2:使用命令行

# 创建新notebook
code fundamentals/03-your-topic-practice.ipynb

1.4.3 Notebook 结构建议

# 标题

## 练习 1: 基础任务
### 任务 1.1: 具体要求
[代码单元格]

## 练习 2: 进阶任务
### 任务 2.1: 具体要求
[代码单元格]

## 挑战练习
[代码单元格]

## 笔记与思考

1.5 在 Notebook 中配置 SAS 内核

确保 notebook 元数据包含:

{
  "kernelspec": {
    "display_name": "SAS",
    "language": "sas",
    "name": "sas"
  }
}

1.6 添加数据文件

如果需要外部数据文件:

  1. 创建 fundamentals/data/ 目录
  2. 将数据文件放入其中
  3. 在代码中使用相对路径:
proc import datafile="data/mydata.csv"
    out=work.mydata
    dbms=csv
    replace;
run;

1.7 使用 sashelp 数据集

推荐使用 SAS 内置数据集进行练习:

/* 常用数据集 */
sashelp.class      /* 学生数据 */
sashelp.cars       /* 汽车数据 */
sashelp.heart      /* 心脏病数据 */
sashelp.baseball   /* 棒球数据 */
sashelp.iris       /* 鸢尾花数据 */

1.8 测试 Notebook

在发布前测试:

  1. 确保 SAS 内核已安装
  2. 运行所有单元格(Cell > Run All)
  3. 检查输出是否正确
  4. 清除输出(Cell > All Output > Clear)再提交

1.9 更新网站

添加新文件后:

  1. Quarto 会自动在 listing 中显示新文件
  2. 重新构建网站:quarto render
  3. 或使用预览模式自动更新:quarto preview

1.10 示例:完整工作流

# 1. 创建新的课程讲义
code fundamentals/04-merging-data-lesson-zh.qmd

# 2. 创建练习notebook
code fundamentals/04-merging-data-practice.ipynb

# 3. 编写内容...

# 4. 测试notebook(在VS Code中运行所有单元格)

# 5. 创建答案notebook
code fundamentals/04-merging-data-solution.ipynb

# 6. 预览网站
quarto preview

# 7. 提交到Git
git add fundamentals/04-*
git commit -m "Add Week 4: Merging Data"
git push

1.11 常见问题

1.11.1 Q: Notebook 找不到 SAS 内核?

A: 运行 setup-sas-kernel.ps1 或手动安装:

pip install sas_kernel
python -m sas_kernel.install --user

1.11.2 Q: SAS 连接失败?

A: 检查 ~/.saspy/sascfg_personal.py 中的 SAS 路径是否正确

1.11.3 Q: 中文显示乱码?

A: 在配置中设置:'encoding': 'utf-8'

1.11.4 Q: Notebook 输出太长?

A: 使用 (obs=10) 限制输出行数:

proc print data=sashelp.class (obs=10);
run;

1.12 资源