【问题标题】:mutate specific columns with tidyverse用 tidyverse 改变特定的列
【发布时间】:2021-08-27 06:13:46
【问题描述】:

快速问题:谁能告诉我如何在 dplyr 语法中执行以下操作?

p4[,1:5] <- lapply(p4[,1:5] , factor)

Col 1 - 5 是角色,我希望它们成为因素。但是,使用 dplyr 我没有完成工作。我的猜测是:

df <- df %>% select(1:5) %>% mutate(as_factor)

但是由于选择功能,这会删除所有其他列。此外, mutate_if 在这里并不是很有帮助,因为我还有其他列是我不想更改的字符。

非常感谢。

【问题讨论】:

    标签: r dplyr tidyverse lapply wrangle


    【解决方案1】:

    将函数应用于多个列的一种方法是dplyr::across() 函数。

    我没有看到示例数据集,所以我自己创建了一个。

    library(dplyr)
    data <- data.frame(
      stringsAsFactors = FALSE,
                  col1 = c("apple", "pear"),
                  col2 = c("wood", "fire"),
                  col3 = c("cup", "plate"),
                  col4 = c("pen", "pencil"),
                  col5 = c("money", "coins")
    )
    
    data %>% 
      mutate(across(.cols = 1:5, .fns = factor)) %>% 
      str()
    #> 'data.frame':    2 obs. of  5 variables:
    #>  $ col1: Factor w/ 2 levels "apple","pear": 1 2
    #>  $ col2: Factor w/ 2 levels "fire","wood": 2 1
    #>  $ col3: Factor w/ 2 levels "cup","plate": 1 2
    #>  $ col4: Factor w/ 2 levels "pen","pencil": 1 2
    #>  $ col5: Factor w/ 2 levels "coins","money": 2 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2020-04-08
      • 2021-11-27
      • 1970-01-01
      相关资源
      最近更新 更多