使用“应用”将数字列转换为带标签的因子

时间:2016-05-21 09:26:12

标签: r apply

我有一个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")))

1 个答案:

答案 0 :(得分:2)

当我们在没有匿名函数调用的情况下使用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")))

上述内容也可以使用mutate_each

中的dplyr完成
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))