R语言 不能合并已标记和双重

dw1jzc5e  于 2024-01-03  发布在  其他
关注(0)|答案(1)|浏览(239)

我目前正在学习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>.

字符串
我的命令是:

ess10_de <- mutate(ess10_de, age_group = case_when(agea>=15 & agea <30 ~1, 
                                                   agea>=30 & agea<50 ~2,
                                                   agea>=50 & agea<70 ~3, 
                                                   agea>=70 & agea<91 ~4, 
                                                   is.na(agea) ~ NA_real_))


我做错了什么?

eblbsuwk

eblbsuwk1#

欢迎来到平台!这里的错误信息实际上很清楚:当你要求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中是可选的。

相关问题