代码之家  ›  专栏  ›  技术社区  ›  mmyoung77

将数字变量转换为dpylr中的因子

  •  1
  • mmyoung77  · 技术社区  · 6 年前

    我的结果数据按他们来自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)
    

    我的问题是,你如何在dpylr中做同样的事情?我试过:

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

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   akrun    6 年前

    我们可以使用 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
    
        2
  •  2
  •   cardinal40    6 年前

    你可以试试:

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

    一旦变量被转换为字符,那么as_factor()调用就会起作用。

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

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