将数字变量转换为dplyr中的一个因子

时间:2018-10-02 20:10:38

标签: r dplyr

我的结果数据按其来自的实验是8个测试组还是16个测试组进行分类:

set.seed(123)
results <- runif(10)
size <- c(16, 16, 16, 8, 16, 8, 8, 16, 16, 8)
df <- data.frame(results, size)

我希望size是一个因子变量。在基数R中,我将简单地执行此操作:

df$size <- as.factor(df$size)

我的问题是,您如何在dplyr中做同样的事情?我尝试过:

library(dplyr)
df %>%
  do(as_factor(size))

但是我收到了错误no applicable method for 'as_factor' applied to an object of class "c('double', 'numeric')"

2 个答案:

答案 0 :(得分:2)

我们可以使用mutate

library(dplyr)
library(magrittr)
df %<>%
   mutate(size = factor(size))

str(df)
#'data.frame':  10 obs. of  2 variables:
# $ results: num  0.288 0.788 0.409 0.883 0.94 ...    
# $ size   : Factor w/ 2 levels "8","16": 2 2 2 1 2 1 1 2 2 1

答案 1 :(得分:2)

您可以尝试:

df %>% 
  mutate(size = as_factor(as.character(size)))

一旦将变量转换为字符,则as_factor()调用将起作用。

编辑:以上解决方案更好!

df %>% mutate(size = factor(size))