【问题标题】:Loop for creating multiple new 3 level variables from another 5 level variable循环用于从另一个 5 级变量创建多个新的 3 级变量
【发布时间】:2022-09-29 22:06:49
【问题描述】:

我正在寻找一种方法来从旧的 5 级变量生成多个 3 级变量,同时保留旧变量。我有这段代码来重新编码 5 级变量

    df2 %>% 
  mutate_at(vars(Question1, Question2, Question3), recode,\'1\'=1, \'2\'=1, \'3\'=3, \'4\'=5, \'5\'=5, \'l\' = NA)

但我想做的是保留旧变量并将 3 级变量生成为 Question1_3l、Question2_3l、Question3_3l 之类的东西。

应该不会太难。在 Stata 中,它看起来像这样:

foreach i of varlist ovsat-not_type_number {
    local lbl : variable label `i\' 
    recode `i\' (1/2=1)(3=2)(4/5=3), gen(`i\'_3l)
    }

谢谢你。

  • 你能给出样本输入和预期输出吗?我想这会解决我脑海中的一些问题。您是否只寻找dplyr 解决方案? (如果是这样,我建议使用dplyr 标签。)谢谢!
  • @r2evans 我没有嫁给 dplyr 解决方案。我将编辑并张贴在顶部。

标签: r recode


【解决方案1】:

尝试:

library(tidyverse)
library(stringr)

df2 <- replicate(6, sample(as.character(1:5), 50, replace = TRUE), simplify = "matrix") %>%
  as_tibble(.name_repair = ~str_c("Question", 1:6))

df2 %>%
  mutate_at(vars(Question1:Question3), 
            ~case_when(.x %in% c('1', '2') ~ 1L, # 1L means integer 1
                       .x %in% c('3') ~ 3L,
                       .x %in% c('4', '5') ~ 5L,
                       TRUE ~ as.integer(NA)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多