【问题标题】:Select columns by pattern and replace factor at once按模式选择列并立即替换因子
【发布时间】:2021-10-24 21:59:38
【问题描述】:

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

【问题讨论】:

    标签: r design-patterns factors recode


    【解决方案1】:

    我们可能会使用tidyverse

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

    【讨论】:

      【解决方案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")
      })
      

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

      【讨论】:

      • 谢谢你的回答,效果很好!!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      相关资源
      最近更新 更多