我目前正在学习 R,只是尝试将数据集按年龄组进行分组。但是,我收到以下错误消息:
Error in mutate():
ℹ In argument: age_group = case_when(...).
Caused by error in case_when():
! Failed to evaluate the left-hand side of formula 1.
Caused by error in vec_compare():
! Can't combine ..1 <haven_labelled> and ..2 <double>.
我的命令是:
R 复制代码 ess10_de <- mutate(ess10_de, age_group = case_when(agea>=15 & 年龄<30 ~1, agea>=30 & 年龄<50 ~2, agea>=50 & 年龄<70 ~3, agea>=70 & 年龄<91 ~4, is.na(agea) ~ NA_real_)) What did I do wrong?
创建具有功能变异的年龄组
这里的错误消息实际上很清楚:当你要求 R 创建年龄组时,它需要进行比较,例如
agea >= 15
。尽管 agea
可能看起来像数字(因此应该与 15
相当),但显然它带有 Stata 标签,因此被认为是 haven_labelled
类型。
我无权访问您的数据,但您可以尝试下面的两个函数来删除所有 Stata 标签并最终得到“干净”的数据。
library(haven)
ess10_de |>
zap_label() |>
zap_labels()
另一个提示(尽管与错误消息无关):您不必使用 Stata 定义年龄组的繁琐方式 - 相反,您可以使用
cut()
:
cut(x,
breaks = c(15, 30, 50, 70, 91),
labels = 1:4)
...其中
x
是数据中的列,labels
在 R 中是可选的。