我的结果数据按其来自的实验是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')"
答案 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))