【发布时间】:2022-01-08 12:29:14
【问题描述】:
我想在指定因子标签的同时将 data.frame 的多列从字符类转换为因子类。
首先,我将创建一个虚拟 data.frame,代码应该在其上以便其他人可以重现该问题,如下所示:
df <- data.frame(replicate(2,sample(0:1,20,rep=TRUE)),
replicate(2,sample(0:2,20,rep=TRUE)))
names(df) <- c("xxx_var1", "xxx_var2", "yyy_var1", "yyy_var2")
我已设法将所需的列转换如下:
df <- df %>%
mutate_at(vars(starts_with("xxx")), factor)
现在我想在 factor() 函数中指定参数,但我不知道如何。如果我尝试以下操作:
df <- df %>%
mutate_at(vars(starts_with("xxx")), factor(labels = c("no", "yes"))
它返回以下错误:
因素中的错误(标签 = c(“否”,“是”)): 无效的“标签”;长度 2 应该是 1 或 0
是否可以使用 mutate_at 一次为所有这些列指定因子标签?
【问题讨论】:
-
您熟悉
purrr包中的map函数吗?此外,您能否提供您用来使问题在我们的机器上重现的数据样本?您可以使用 dput(head(df)) 并从控制台复制结果。 -
这将有助于在
df中以纯文本形式查看具有代表性的数据样本例如来自dput(df)的输出。 -
df %>% mutate_at(vars(starts_with("xxx")), factor, labels = c("no", "yes"))? -
library(dplyr); df %>% mutate(across(starts_with("xxx"), ~factor(., levels = c("no", "yes")))) -
@jdobres 您的解决方案有效,非常感谢!非常干净和简单。如果您可以发布您的想法作为答案,我可以接受它作为正确的解决方案。