变量和数值标签

先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。

decode

把带标签的数值变量转换成文本变量

Stata

decode x, generate(str_x)

R 包:tidystata

mutate(data, str_x = decode(x))

encode

把文本变量转换成带标签的数值变量

Stata

encode str_x, generate(x)

R 包:dplyr

mutate(data, x = factor(str_x))

与 Stata 有差异 factor() 创建带 R 类别的整数水平编号;encode 创建数值编码和独立值标签定义。排序规则可能改变编号顺序。

label

给数值变量的所有取值贴上标签

Stata

label define gender 1 "male" 2 "female"

R 包:dplyr

mutate(data, gender = factor(gender, levels = 1:2, labels = c("male", "female")))

R 中带标签的类别变量通常用因子(factor)存储。请明确写出 levels,确保每个取值对应正确的标签。

删除数值标签

Stata

label drop yesno

R 包:haven

mutate(data, x = haven::zap_labels(x))

查看取值标签

Stata

label list x

R 包:base

levels(data$x)

对于用 haven 读入的带标签数据,可用 haven::print_labels(data$x)。

把数值标签加到变量上

Stata

label values x yesno

R 包:haven

mutate(data, x = haven::labelled(x, yesno))

先定义一次标签,例如 yesno <- c(No = 0, Yes = 1),再加到任意变量上;R 中更常用的做法是 factor()。

贴上变量标签

Stata

label variable x "Variable name"

R 包:labelled

labelled::set_variable_labels(data, x = "Variable name")

从 Stata 文件读入的变量标签会被保留;variables() 和 codebook() 会显示它们。

另有 1 个示例及替代实现

给数值变量的部分取值贴上标签

Stata

label define x 9 "Unknown" 10 "Refused"

R 包:haven

mutate(data, x = haven::labelled(x, c(Unknown = 9, Refused = 10)))

R 中很少只给部分取值贴标签;haven 可以保留这类标签,便于与 Stata 互通。tab() 和 codebook() 会显示这些标签。

notes

给变量添加注释

Stata

notes x: Collected in wave 2

R 包:base

attr(data$x, "note") <- "Collected in wave 2"

R 没有 notes 功能;通常用属性或脚本中的注释代替。