数据挖掘与R语言

第4讲:Markdown 语法

2026年03月25日

上讲回顾

  • if 分支if-else if-else 实现多路判断;ifelse() 是向量化版本,用于批量处理数据列
  • for 循环:遍历序列逐一执行;预分配结果向量提升效率;break 退出、next 跳过
  • while 循环:条件驱动,适合不知道循环次数的场景;务必确保循环能终止
  • switch 语句:多个固定值分支时比 else if 更简洁优雅
  • 自定义函数function() 打包可复用代码;默认参数增加灵活性;DRY 原则
  • R 内置函数:数学、统计、字符串、缺失值处理——善用现成工具,事半功倍

本讲内容

  • Part 1:什么是 Markdown? ——轻量级标记语言简介(约10分钟)
  • Part 2:基础语法 ——标题、段落、强调、列表(约20分钟)
  • Part 3:代码块与数学公式 ——展示 R 代码与方程(约15分钟)
  • Part 4:表格与引用 ——结构化内容与文献引用(约15分钟)
  • Part 5:完整论文示例 ——把所有语法融入一篇小论文(约25分钟)
  • Part 6:R Markdown 初探 ——代码与文字的融合(约5分钟)

提示

本讲只讲一件事:Markdown。我们将用 Wooldridge 教材中"教育对工资的影响"这个经典例子,从头写一篇完整的学术小论文,在写作过程中学会所有基础语法。

Part 1 什么是 Markdown?

轻量级标记语言

1.1 Markdown 是什么?

Markdown 是由 John Gruber 于 2004 年创建的轻量级标记语言。

核心理念:用「易读易写的纯文本格式」撰写文档,然后转换为 HTML、PDF、Word 等多种格式。

你写的(纯文本)

#### 引言

教育是影响工资的**核心因素**。
本文使用 `wage2` 数据集进行分析。

渲染后的样子

引言

教育是影响工资的核心因素。 本文使用 wage2 数据集进行分析。

重要

Markdown 的哲学是内容与格式分离:你专注于写什么,Markdown 负责它看起来怎样。这与 Word 的"所见即所得"恰好相反——Markdown 是"所想即所得"。

1.2 为什么学 Markdown?

Markdown 的优势

  • 纯文本:任何编辑器都能打开,不依赖特定软件
  • 版本友好:可以用 Git 追踪修改历史
  • 一次编写,多处发布:同一文档输出为网页、PDF、幻灯片
  • 专注内容:不会为调整字体大小浪费时间
  • 学术规范:R Markdown、Quarto、Jupyter Notebook 都基于它

常见使用场景

场景 工具
GitHub 项目说明 README.md
学术论文/报告 Quarto / R Markdown
课程讲义(本课件!) Quarto + RevealJS
技术博客 Hugo / Jekyll
数据分析报告 R Markdown
交互式笔记本 Jupyter Notebook

注记

本课件就是用 Quarto(Markdown 的超集)写的。 你现在看到的每一张幻灯片,背后都是纯文本的 .qmd 文件。

Part 2 基础语法

标题 · 段落 · 强调 · 列表

2.1 标题:# 号的层级结构

Markdown 源码

# 教育回报研究

## 一、引言

### 1.1 研究背景

#### 1.1.1 数据来源

渲染效果

# H1 → 文章总标题(最大)

## H2 → 一级节标题

### H3 → 二级节标题

#### H4 → 三级节标题(较小)

注记

三条规则

  1. # 号后面必须有一个空格# 标题#标题
  2. 一篇文档通常只有一个 H1(作为文章总标题)
  3. 标题层级应逐级递进,不建议从 H1 直接跳到 H3

2.2 段落与换行:空行的力量

Markdown 源码

教育是影响个人收入的核心因素之一。
Mincer(1974)的研究奠定了人力资本
理论的基础。

本文使用 Wooldridge(2016)教材中的
wage2 数据集,探讨受教育年限对月薪
的影响。

行末加两个空格  
可以在段落内换行。

渲染效果

教育是影响个人收入的核心因素之一。Mincer(1974)的研究奠定了人力资本理论的基础。

本文使用 Wooldridge(2016)教材中的 wage2 数据集,探讨受教育年限对月薪的影响。

行末加两个空格
可以在段落内换行。

警告

最常见的错误:直接按回车换行,在 Markdown 里不会产生新段落!必须空一整行才是新段落,或者行末加两个空格才能强制换行。

2.3 强调:斜体、加粗、行内代码

Markdown 源码

受教育年限的影响在
*ceteris paribus*(其他条件不变)
的假设下进行估计。

本研究发现:**每增加一年教育,
月薪平均上升约 8%**,
该结果在 1% 水平显著。

数据集为 `wage2`,共有 `935` 个观测,
关键变量为 `educ`(受教育年限)。

渲染效果

受教育年限的影响在 ceteris paribus(其他条件不变)的假设下进行估计。

本研究发现:每增加一年教育,月薪平均上升约 8%,该结果在 1% 水平显著。

数据集为 wage2,共有 935 个观测,关键变量为 educ(受教育年限)。

提示

三种强调的使用时机

  • *斜体*_斜体_:外文术语(ceteris paribus)、书名、需要轻微强调的词
  • **加粗**__加粗__:核心结论、重要数字、关键概念
  • `行内代码`:变量名(educ)、函数名(lm())、文件名(wage2.csv

2.4 无序列表与有序列表

无序列表(- / * / +

## 核心解释变量

- educ:受教育年限(年)
- exper:工作经验(年)
  - 其中包含平方项 exper^2

### 嵌套列表

- 控制变量
  - 婚姻状态(married)
  - 南方虚拟变量(south)
  - 城市虚拟变量(urban)

效果:

  • educ:受教育年限(年)
  • exper:工作经验(年)

有序列表(1. 2. 3.

## 研究步骤

1. 提出研究假设
2. 描述性统计分析
3. OLS 基准回归
4. 加入控制变量
5. 稳健性检验
   1. 改变样本范围
   2. IV 估计(工具变量)

效果:

  1. 提出研究假设
  2. 描述性统计分析
  3. OLS 基准回归
  4. 加入控制变量
    1. 改变样本范围
    2. IV 估计(工具变量)

注记

嵌套列表用 2 个或 4 个空格缩进,不要用 Tab;有序列表的数字可以全写 1.,Markdown 会自动编号。

Part 3 代码块与数学公式

围栏代码块 · LaTeX 数学公式

3.1 代码块:用三个反引号围起来

用三个反引号(```)开始和结束,并在开头指定语言名称:

```r
# 加载数据
library(wooldridge)
data(wage2)

# OLS 基准回归
model1 <- lm(log(wage) ~ educ, data = wage2)
summary(model1)
```

渲染后会显示带语法高亮的代码块:

# 加载数据
library(wooldridge)
data(wage2)

# OLS 基准回归
model1 <- lm(log(wage) ~ educ, data = wage2)
summary(model1)

注记

语言标识(rpythonbashsqltext)让渲染引擎对代码进行语法高亮。不加语言标识也能显示代码块,只是没有颜色。

3.2 数学公式:LaTeX 语法

Markdown 使用 LaTeX 语法书写数学公式,这是学术写作的国际标准。

行内公式:用单个 $ 包裹

Mincer(1974)的工资方程为
$\ln(w_i) = \alpha + \beta_1 s_i + \beta_2 x_i + \beta_3 x_i^2 + \varepsilon_i$,
其中 $s_i$ 为受教育年限,$x_i$ 为工作经验年数。

渲染效果:Mincer(1974)的工资方程为 \(\ln(w_i) = \alpha + \beta_1 s_i + \beta_2 x_i + \beta_3 x_i^2 + \varepsilon_i\),其中 \(s_i\) 为受教育年限,\(x_i\) 为工作经验年数。

独立公式:用双 $$ 包裹(居中显示)

OLS 估计量的矩阵形式为:

$$\hat{\beta} = (X^\top X)^{-1} X^\top y$$

渲染效果:

\[\hat{\beta} = (X^\top X)^{-1} X^\top y\]

3.3 常用 LaTeX 符号速查

效果 代码 效果 代码
\(\alpha, \beta, \gamma\) \alpha, \beta, \gamma \(\hat{\beta}\) \hat{\beta}
\(x^2, x^{10}\) x^2, x^{10} \(\bar{x}\) \bar{x}
\(x_i, x_{ij}\) x_i, x_{ij} \(\tilde{x}\) \tilde{x}
\(\sum_{i=1}^{n}\) \sum_{i=1}^{n} \(\varepsilon\) \varepsilon
\(\frac{a}{b}\) \frac{a}{b} \(\infty\) \infty
\(\sqrt{x}\) \sqrt{x} \(\neq, \leq, \geq\) \neq, \leq, \geq
\(X^\top\) X^\top \(\ln, \log\) \ln, \log

提示

不需要背住所有符号!遇到不会写的公式,在 Myscript 上画出符号就能找到对应的 LaTeX 代码。

Part 4 表格与引用

表格对齐 · 块引用 · 超链接 · 脚注

4.1 表格:用 |- 画出来

| 变量   | 含义         |  均值 | 标准差 |
|:-------|:-------------|------:|-------:|
| wage   | 月薪(美元) | 957.9 |  404.4 |
| educ   | 受教育年限   |  13.5 |    2.2 |
| exper  | 工作经验(年)| 11.6 |    4.4 |
| tenure | 在职年限(年)|  7.2 |    5.5 |

渲染效果:

变量 含义 均值 标准差
wage 月薪(美元) 957.9 404.4
educ 受教育年限 13.5 2.2
exper 工作经验(年) 11.6 4.4
tenure 在职年限(年) 7.2 5.5

注记

对齐规则:--- 左对齐(文字列);:---: 居中;---: 右对齐(数字列)。数字列右对齐是学术表格的惯例,方便对比大小。

4.2 块引用、超链接与脚注

块引用(>

> 教育的回报不仅体现在工资上,还体现在就业稳定性、
> 职业发展和非货币收益中。
>
> ——Wooldridge, *Introductory Econometrics*, 2016

教育的回报不仅体现在工资上,还体现在就业稳定性、职业发展和非货币收益中。

——Wooldridge, Introductory Econometrics, 2016

超链接

数据来源于 [Wooldridge R 数据包](https://cran.r-project.org/package=wooldridge)

数据来源于 Wooldridge R 数据包

脚注

OLS 估计量在球形扰动项假设下是 BLUE[^1]

[^1]: 即最优线性无偏估计量(Best Linear Unbiased Estimator),由 Gauss-Markov 定理保证。

OLS 估计量在球形扰动项假设下是 BLUE1

4.3 水平线与转义字符

水平分割线:用三个或以上的 -*_ 单独成行

## 五、结论

本文的主要发现……

---

## 参考文献

转义字符:在特殊符号前加 \ 可以显示原始字符

\*这不是斜体\*     →   *这不是斜体*(按字面显示星号)
\# 这不是标题      →   # 这不是标题(按字面显示井号)
\`这不是代码\``这不是代码`(按字面显示反引号)

需要转义的字符:\ * _ # [ ] ( ) { } . ! + - =

提示

什么时候需要转义? 当你想在正文中显示 *#` 等 Markdown 特殊字符的字面意思时,就在它前面加一个反斜杠 \

Part 5 完整论文示例

把所有语法融入一篇学术小论文

5.1 我们要写的论文

接下来,我们用 Markdown 从头写一篇完整的学术小论文:

论文题目

《教育对工资的影响:来自 NLSY 的证据》

数据

Wooldridge(2016)教材附带的 wage2 数据集,来自美国全国青年纵向调查(NLSY),包含 935 名男性劳动者在 1980 年的观测记录。

论文结构

# 教育对工资的影响:来自 NLSY 的证据

## 一、引言
### 1.1 研究背景
### 1.2 研究问题

## 二、数据与变量
### 2.1 数据来源
### 2.2 描述统计

## 三、实证模型

## 四、主要结果

## 五、结论

## 参考文献

5.2 论文头部与引言

# 教育对工资的影响:来自 NLSY 的证据

**作者**:张三  
**日期**:2026年3月27日

---

## 一、引言

### 1.1 研究背景

教育是人力资本理论(*human capital theory*)的核心议题之一。
**Mincer(1974)**首次将受教育年限与工作经验纳入工资方程,
确立了现代劳动经济学的基本分析框架。

> 教育投资的私人回报率在发达国家约为 6%–10%,
> 在发展中国家更高,可达 10%–15%。
> ——Psacharopoulos & Patrinos, 2018

### 1.2 研究问题

本文的核心问题是:**每多接受一年教育,月薪平均增加多少?**

本文利用 `wage2` 数据集($N=935$)进行 OLS 估计。

5.3 数据描述部分

二、数据与变量

2.1 数据来源

数据来自 Wooldridge R 数据包 中的 wage2 数据集,原始来源为美国全国青年纵向调查(NLSY)。

2.2 描述统计

表1列示了主要变量的描述统计。

▶️ 查看代码
library(wooldridge)
library(modelsummary)
data(wage2)
wage2 |> 
  select(wage, educ, exper, tenure, IQ) |> 
  datasummary_skim()
Unique Missing Pct. Mean SD Min Median Max Histogram
wage 449 0 957.9 404.4 115.0 905.0 3078.0
educ 10 0 13.5 2.2 9.0 12.0 18.0
exper 22 0 11.6 4.4 1.0 11.0 23.0
tenure 23 0 7.2 5.1 0.0 7.0 22.0
IQ 80 0 101.3 15.1 50.0 102.0 145.0

样本中受教育年限的均值为 13.47 年, 月薪的均值约为 958 美元1

5.4 实证模型部分

三、实证模型

3.1 基准模型

参考 Mincer(1974)的经典设定,基准工资方程为:

\[ \ln(\text{wage}_i) = \beta_0 + \beta_1 \cdot \text{educ}_i + \varepsilon_i \tag{1} \]

其中:

  • \(\ln(\text{wage}_i)\) 为月薪的自然对数,
  • \(\text{educ}_i\) 为受教育年限,
  • \(\beta_1\) 即教育回报率的 OLS 估计值。

3.2 扩展模型

在基准模型基础上,依次加入工作经验及其平方项:

\[ \ln(\text{wage}_i) = \beta_0 + \beta_1 \text{educ}_i + \beta_2 \text{exper}_i + \beta_3 \text{exper}_i^2 + \beta_4 \text{tenure}_i + \varepsilon_i \tag{2} \]

用 R 语言估计模型(2)的代码如下:

model1 <- lm(log(wage) ~ educ,
             data = wage2)

model2 <- lm(log(wage) ~ educ + exper + I(exper^2) + tenure,
             data = wage2)
summary(model2)

5.5 结果与结论部分

四、主要结果

▶️ 查看代码
library(jtools)

model1 <- lm(log(wage) ~ educ,
             data = wage2)

model2 <- lm(log(wage) ~ educ + exper + I(exper^2) + tenure + IQ,
             data = wage2)

export_summs(model1, model2,
             model.names = c("模型1", "模型2"),
             coefs = c("教育年限" = "educ",
                       "工作经验" = "exper",
                       "工作经验^2" = "I(exper^2)" ,
                       "当前任职年限" = "tenure",
                       "智商" = "IQ"))
模型1 模型2
教育年限 0.06 *** 0.06 ***
(0.01)    (0.01)   
工作经验         0.02    
        (0.01)   
工作经验^2         -0.00    
        (0.00)   
当前任职年限         0.01 ***
        (0.00)   
智商         0.01 ***
        (0.00)   
N 935        935       
R2 0.10     0.18    
*** p < 0.001; ** p < 0.01; * p < 0.05.

五、结论

本文的主要发现如下:

  1. 在其他条件不变的情况下,每多受教育一年,月工资增加约 6.0%

回报率的经济含义:假设某人当前月薪为 1000 美元,多读一年书预期月薪将上升约 60 美元。

  1. 工作经验对工资的影响不显著
  2. 在职年限每增加一年,月工资约上升 1%

参考文献

  • Mincer, J. (1974). Schooling, experience, and earnings. NBER.
  • Wooldridge, J. M. (2016). Introductory econometrics: A modern approach (6th ed.). Cengage Learning.
  • Psacharopoulos, G., & Patrinos, H. A. (2018). Returns to investment in education. World Bank Policy Research Working Paper, 8402. ````

提示

完整论文的文件只有一个 .md 文件,打开就是纯文本,用任意编辑器即可编辑。用 Pandoc 或 Quarto 一行命令就能把它转换成 PDF、Word 或网页。

Markdown 语法速查表

语法 效果
# H1 ## H2 ### H3 标题层级
**加粗** / *斜体* 加粗 / 斜体
`行内代码` 行内代码(变量名、函数名)
```` 代码块(带语言高亮)
$公式$ / $$公式$$ 行内 / 独立数学公式
- 无序 / 1. 有序 列表(可嵌套,用2空格缩进)
\| A \| B \| + \|---\|---\| 表格(:--- 左对齐,---: 右对齐)
> 引用文字 块引用
[文字](URL) 超链接
[^1] / [^1]: 内容 脚注
--- 水平分割线
空一行 新段落(最核心的规则!)

本讲小结

  • Markdown 是什么:轻量级纯文本标记语言;核心理念是内容与格式分离;一次编写,多处发布(HTML / PDF / Word)

  • 标题与段落# 号控制标题层级,# 后必须有空格;空一整行才是新段落,直接回车不换段

  • 强调与代码**加粗** 表达核心结论;*斜体* 用于术语和书名;`反引号` 标记变量名和函数名;三重反引号 + 语言名创建代码块

  • 数学公式$...$ 行内公式;$$...$$ 独立居中公式;使用标准 LaTeX 语法,学术写作必备技能

  • 表格与引用:用 |- 绘制表格;:---: 控制对齐;> 块引用;[文字](URL) 超链接;[^1] 脚注

  • R Markdown:Markdown 的超集;代码块嵌入可执行 R 代码;行内代码自动嵌入计算结果;本讲所学 Markdown 语法完全通用,直接平移

课后练习

基础练习(必做)

  1. 用 Markdown 写出"教育对工资的影响"论文的完整骨架:包括全部五节的标题层级、每节至少一个段落,在引言中用 > 插入一段学术引用,在研究问题句中对核心问题加粗
  2. 制作一张 Markdown 描述统计表,包含 wageeducexper 三个变量,文字列左对齐,数字列右对齐
  3. $$...$$ 写出公式(2)的完整 Mincer 扩展方程(含经验平方项)

进阶挑战(选做)

  1. 在论文的"实证结果"部分写一个 Markdown 回归结果表:两列模型,括号内为标准误,表格底部注明显著性水平标注规则
  2. 创建一个 .Rmd 文件:YAML 头部设置标题和作者,用代码块加载 wage2 并运行 summary(),用行内代码在正文中嵌入样本量和均值
  3. 写一份完整的论文参考文献列表(## 参考文献 下的无序列表),用 Markdown 正确标注斜体书名、期刊名,至少包含本讲提到的三篇文献

下讲预告

第5讲:数据导入、清洗与整理(tidyverse 初步)

  • readr / readxl:高效读取 CSV、Excel 等多种格式数据
  • tidyr:宽表变长表,pivot_longer() / pivot_wider()
  • dplyr:数据操作的"瑞士军刀"
    • filter()select()mutate()summarise()group_by()
  • 管道操作符 |>%>%
  • 结合 R Markdown:用 tidyverse 处理数据,用 Markdown 撰写报告

提示

学完第5讲,你就能用 R + Markdown 写出一份真正「端到端」的数据分析报告——从读取原始数据到输出 PDF 报告,全程可重复。

谢谢!

第4讲:Markdown 语法


「写作是思维的镜子;Markdown 让你专注于思维本身,而非格式的打磨。」