簡體   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