У меня есть фрейм данных с несколькими столбцами. Некоторые столбцы имеют фиксированные шаблоны в начале, например q1a, q1a_30, q1a_60, q1a_90. Я хочу вызвать столбцы с тем же шаблоном попрошайничества и заменить их множители.

Процесс Я могу сделать это отдельно для каждого этапа, но есть ли способ сделать это сразу? Вот что я сделал:

df[,grepl("q1a", colnames(df))]
df$q1a<- recode_factor(df$q1a, `1` = "Yes", `2` = "No",`3` = "I don't know",`4` = "Maybe")
1
Meli 25 Окт 2021 в 00:59

2 ответа

Лучший ответ

Если вы определяете, какие столбцы следует перекодировать на основе определенного вами шаблона:

my_col <- grep("q1a", names(df))

Вы можете использовать lapply для этих столбцов, чтобы перекодировать ваши факторы:

df[, my_col] <- lapply(df[, my_col], function(x) {
  recode_factor(x, `1` = "Yes", `2` = "No", `3` = "I don't know", `4` = "Maybe")
})

Пожалуйста, дайте мне знать, если это то, что вы имели в виду.

0
Ben 25 Окт 2021 в 03:31
Спасибо за ответ, отлично сработало !!!
 – 
Meli
25 Окт 2021 в 03:55

Мы можем использовать tidyverse

library(dplyr)
df %>%
    mutate(across(starts_with('q1a'), 
    ~ recode_factor(., `1` = "Yes", `2` = "No",
           `3` = "I don't know",`4` = "Maybe")))
0
akrun 25 Окт 2021 в 03:41