У меня есть набор данных с помеченными переменными (импортирован из Stata) и я хотел бы изменить атрибут метки (в нижний регистр) нескольких переменных.Я знаю, как сделать этот столбец за столбцом, но хочу вложить назначение в функцию, чтобы использовать lapply (или, наоборот, mutate_at из tidyverse).
library(tidyverse)
gender <- labelled(c(0, 0, 1, 0), labels = c(MALE = 0, FEMALE = 1))
group <- labelled(c(1, 2, 3, 1), labels = c(TREATMENT_FIRST = 1, TREATMENT_SECOND = 2, CONTROL = 3))
result <- rnorm(4)
df <- tibble(gender, group, result)
names(attr(df$gender, "labels"))
Я хотел бы изменить атрибут метки пола и группыв строчные буквы.
names(attr(df$gender, "labels")) <- tolower(names(attr(df$gender, "labels")))
Это работает, но в моем реальном наборе данных у меня много переменных, поэтому я хотел бы сделать это внутри функции.Я думал, что смогу определить функцию, как показано ниже, а затем использовать lapply, но это возвращает метки вместо назначения меток атрибуту.
f1 <- function(x) {
names(attr(x, "labels")) <- tolower(names(attr(x$y, "labels")))
}
cols <- c("gender", "group")
df[cols] <- lapply(df[cols], f1)
df