【发布时间】:2021-03-18 03:44:55
【问题描述】:
我希望能够通过用变量(列)的名称替换其中一个级别来有效地重新编码数据框的大量变量(列)的因子级别。
Health <- tibble(Anemia = c("yes", "no", "no"),
BloodPressure = c("no", "yes", "no"),
Asthma = c("no", "no", "yes"))
我希望输出看起来像这样
Health2 <- tibble(Anemia = c("Anemia", "no", "no"),
BloodPressure = c("no", "BloodPressure", "no"),
Asthmal = c("no", "no", "Asthma"))
我想要这个输出而不需要手动更改每个级别,因为我有一个包含 100 个左右变量的数据库,我必须重新编码。我试图创建一个函数来做到这一点
Med_rename <- function(x) {
levels = c(no = "no", names(x) ="yes")
fct_recode(x, !!!levels)
}
Med_rename2 <- function(x) {
y = names(x)
levels = c(no = "no", y ="yes")
fct_recode(x, !!!levels)
}
但是这些尝试中的任何一个或其他使用矢量化尝试替换级别的尝试的输出都不会用变量(列)名称替换“是”。是否有另一种矢量化方式来用列名替换“是”并应用于大量变量?
【问题讨论】:
标签: r function refactoring vectorization forcats