【问题标题】:Looping through labelles to create them in the same way循环通过标签以相同的方式创建它们
【发布时间】:2021-11-15 21:44:22
【问题描述】:

我真的很喜欢有标签的包裹。

我的分析中有大量需要制作的标签。有没有办法让它遍历所有列并以相同的方式修改它们,而不是一个一个地添加它们。例如,如果我想将它们全部设为 Title Case。请注意,我希望更改标签,而不是实际的列名。

library(labelled)
library(ggplot2)

mpg_new <- ggplot2::mpg %>% 
  set_variable_labels(manufacturer = "Manufacturer")

labelled::var_label(mpg_new$manufacturer)

【问题讨论】:

    标签: r r-labelled


    【解决方案1】:

    如果我们需要将它们全部转换为标题大小写,可以在set_variable_labels 中传递一个命名的vector 以及set_variable_labels

    library(labelled)
    library(ggplot2)
    data(mpg)
    var_labels <- setNames(tools::toTitleCase(names(mpg)), names(mpg))
    mpg_new <- mpg %>%
        set_variable_labels(.labels = var_labels, .strict = FALSE)
    

    -检查

    > str(mpg_new)
    tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
     $ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
      ..- attr(*, "label")= chr "Manufacturer"
     $ model       : chr [1:234] "a4" "a4" "a4" "a4" ...
      ..- attr(*, "label")= chr "Model"
     $ displ       : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
      ..- attr(*, "label")= chr "Displ"
     $ year        : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
      ..- attr(*, "label")= chr "Year"
     $ cyl         : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
      ..- attr(*, "label")= chr "Cyl"
     $ trans       : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
      ..- attr(*, "label")= chr "Trans"
     $ drv         : chr [1:234] "f" "f" "f" "f" ...
      ..- attr(*, "label")= chr "Drv"
     $ cty         : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
      ..- attr(*, "label")= chr "Cty"
     $ hwy         : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
      ..- attr(*, "label")= chr "Hwy"
     $ fl          : chr [1:234] "p" "p" "p" "p" ...
      ..- attr(*, "label")= chr "Fl"
     $ class       : chr [1:234] "compact" "compact" "compact" "compact" ...
      ..- attr(*, "label")= chr "Class"
    

    【讨论】:

      【解决方案2】:

      实现您想要的结果的另一种选择是通过labelled::var_label,如下所示:

      library(labelled)
      library(ggplot2)
      
      mpg_new <- ggplot2::mpg
      
      var_label(mpg_new) <- stringr::str_to_title(names(mpg_new))
      
      var_label(mpg_new, unlist = TRUE)
      #>   manufacturer          model          displ           year            cyl 
      #> "Manufacturer"        "Model"        "Displ"         "Year"          "Cyl" 
      #>          trans            drv            cty            hwy             fl 
      #>        "Trans"          "Drv"          "Cty"          "Hwy"           "Fl" 
      #>          class 
      #>        "Class"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 2019-08-11
        • 1970-01-01
        • 1970-01-01
        • 2019-02-16
        • 1970-01-01
        相关资源
        最近更新 更多