繁体   English   中英

使用 NA 创建虚拟变量的更好方法 - 试图改进编码我已经做得很差

[英]better way to create dummy variables with NA- trying to improve coding I can already do poorly

我有一个回答调查问题的 df,其中 df$Q57 是五个答案之一:

  1. "" (<- 空白基本上是 NA)
  2. 我永远不会这样做
  3. 我会在五年内做到这一点
  4. 我会在 10 年内做到这一点
  5. 我最终会这样做

我想创建一个虚拟变量,其中:

  1. "" = 不适用
  2. 我永远不会这样做 = 0
  3. 我会在五年内做到这一点 = 1
  4. 我会在 10 年内做到这一点 = 1
  5. 我最终会这样做 = 1

我知道如何做到这一点的最好方法是使用一系列 ifelse 命令:

df$Q57_dummy <- ifelse(df$Q57 == "I would never install water control structures", 0, 1)
df$Q57_dummy <- ifelse(df$Q57 == "", NA, df$Q57_dummy)
table(df$Q57_dummy , useNA = "always")

这有效,但我觉得有更简洁的方法可以做到这一点,我想知道是否有人有建议,因为我将不得不重新编码结果超过 1,0,NA 的调查答案。 谢谢!

tidyverse方法:

df %>%
    mutate(Q57_dummy = case_when(
        Q57 == "" ~ NA,
        Q57 == "I would never do this" ~ FALSE,
        TRUE ~ TRUE # this is the else condition
    ))

您可以根据您喜欢的代码风格对 else 条件采取几种不同的方法。 以上工作,但你也可以用stringr做到这stringr

str_detect(Q57, "I will do this") ~ TRUE

或手动输入选项:

Q57 %in% c("I will do this in five years",...) ~ TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM