不能结合避风港标签和双重

问题描述 投票:0回答:1

我目前正在学习 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 variables combine group mutate
1个回答
0
投票

这里的错误消息实际上很清楚:当你要求 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 中是可选的。

© www.soinside.com 2019 - 2024. All rights reserved.