使用 Apply 将数值列转换为带标签的因子

Using Apply to convert numeric columns to factors with labels

我有一个包含 5 个项目的李克特量表,其中有五个可能,我正在尝试使用包 likert 将其可视化。最终目标是为每个结构制作一个图表,显示用户如何使用某个方面以某种方式回答。该软件包要求所有内容都是我使用每列以下代码完成的一个因素

myscale$scale_1 <- factor (myscale$scale_1, 
                        levels = c(0:5),
                        labels=c("Unanswered","1","2","3","4","5"))

我认为这是使用 lapply 将其应用于数据框中所有五列的绝佳方式。我在下面尝试过,但有点碰壁。我看过一些例子

lapply(myscale,factor(levels = c(0:5), labels=c("Unanswered","1","2","3","4","5")))

当我们在没有匿名函数调用的情况下使用 lapply 时,新函数的参数可以这样传递。

myscale[] <- lapply(myscale, factor, levels = 0:5, 
                    labels = c("Unanswered", "1", "2", "3", "4", "5"))

如果我们使用匿名函数调用,

myscale[] <- lapply(myscale, function(x) factor(x, levels = 0:5,
                labels =c("Unanswered", "1", "2", "3", "4", "5")))

以上内容也可以用 dplyr

中的 mutate_each 完成
library(dplyr)
library(magrittr)
myscale %<>% 
   mutate_each(funs(factor(., levels = 0:5, labels = c("Unanswered", 1:5))))

数据

set.seed(24)
myscale <- data.frame(scale_1 = sample(0:5, 20, replace=TRUE),
           scale_2 = sample(0:5, 20, replace=TRUE))