Перебираем метки, чтобы создать их таким же образом

#r #r-labelled

Вопрос:

Мне очень нравится упаковка с этикеткой.

У меня есть анализ, в котором есть тонны ярлыков, которые мне нужно сделать. Вместо того, чтобы добавлять их по одному, есть ли способ, чтобы он проходил по всем столбцам и изменял их таким же образом. Например, если бы я хотел сделать их все заглавными буквами. Пожалуйста, обратите внимание, что я надеюсь изменить метку, а не фактическое название столбца.

 library(labelled) library(ggplot2)  mpg_new lt;- ggplot2::mpg %gt;%   set_variable_labels(manufacturer = "Manufacturer")  labelled::var_label(mpg_new$manufacturer)  

Ответ №1:

Если нам нужно преобразовать в регистр заголовка для всех из них, мы также можем передать имя vector в set_variable_labels

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

-проверка

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