【发布时间】:2021-01-30 20:34:44
【问题描述】:
我正在处理一列就业数据。我想以以下值结束:
- 失业
- 退休
- 自雇人士
- 已禁用
- 受雇
我已经清理了所有值的所有不同迭代,除了就业。我正在尝试制定一个声明,该声明将执行以下操作:
如果不在此列表中,“失业 | 退休 | 自雇 | 残疾”将值更改为“已就业”。
我一直在尝试使用 %notin% 函数和 replace() 函数,但缺少一些东西。任何为我指明正确方向的帮助将不胜感激。
更新/编辑:
根据@Rui Barradas 的建议,我得到了可以运行的代码,但是在清理和注释代码时,我破坏了一些东西,我终生无法弄清楚我做错了什么。下面的代码不会引发错误,但当我使用table(df7$patient_employment) 验证时,它不会将值更改为“已使用”
`%notin%` <- Negate(`%in%`)
x <- c(df7$patient_employment, "Unemployed", "Retired", "Self-Employed", "Disabled")
x[x %notin% df7$patient_employment] <- "Employed"
已解决:
在一些额外的帮助之后,有人指出我在使用示例中的 x 时应该使用我的数据名称。在这方面工作太久了。是时候伸展我的腿了。谢谢@Rui Barradas
【问题讨论】:
-
dat$status[! dat$status %in% c("Unemployed", "Retired", "Self-Employed", "Disabled")] <- "Employed"。 (将dat替换为您的data.frame 名称,将status替换为列名。)(如果这不起作用,请edit 您的问题并提供dput(head(dat))的输出。谢谢!)跨度> -
@r2evans 虽然我无法让它工作,但我相信这可能是由于我的经验不足,我感谢您抽出宝贵时间做出回应。我能够让它与不同的解决方案一起工作。谢谢