Select 列按模式并立即替换因子

Select columns by pattern and replace factor at once

我有一个包含多列的数据框。一些列在开头有固定的模式,例如 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")

如果您根据确定的模式确定要重新编码的列:

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")
})

如果这是您的想法,请告诉我。

我们可以使用tidyverse

library(dplyr)
df %>%
    mutate(across(starts_with('q1a'), 
    ~ recode_factor(., `1` = "Yes", `2` = "No",
           `3` = "I don't know",`4` = "Maybe")))