2017-09-08 16 views
0

2つの変数(アンケートから):1つは1-5(またはNA)の範囲のスコアで、1つはバイナリ変数です。措置は「適用されない」。それぞれに異なる条件を使用して2つの変数を結合します。

測定変数(Q17_1)の '1'に相当する「該当しない」ボックス(この例ではQ17NA_1の '1')にチェックを入れたいと思います。

その他の場合(Q17NA_1 = NAの場合)は、結果変数をQ17_1と同じにします。

#====================================== 
library(tidyverse) 
# create fictional data 
data <- tibble (
    Q17_1 = c(1, NA, NA, 1, 2, 3, NA, 2, NA), 
    Q17NA_1 = c(NA, 1, NA, 1, NA, 1, NA, 1, NA), 
    Q17_expected = c(1,1,NA,1,2,1,NA,1,NA) 
) 
# need to use the following rules to arrive at Q17_expected, but am not sure how to arrive at this result 
# 1) If Q17_NA_1 = 1, then the outcome (Q17_expected) should be 1 
# 2) If Q17_NA_1 = NA, then the outcome (Q17_expected) should be the value of (Q17_1) 
#====================================== 

だからデータは次のようになります。

data$Q17_expected2 <- ifelse(!is.na(data$Q17_1),data$Q17_1,data$Q17NA_1) 

が、それはそれとして、正しく動作しません。前の回答(How to combine 2 variables and ignore NAs)に基づいて

# A tibble: 9 x 3 
    Q17_1 Q17NA_1 Q17_expected 
    <dbl> <dbl>  <dbl> 
1  1  NA   1 
2 NA  1   1 
3 NA  NA   NA 
4  1  1   1 
5  2  NA   2 
6  3  1   1 
7 NA  NA   NA 
8  2  1   1 
9 NA  NA   NA 

私は次のことを試してみました最初の条件を強制することができません(つまり、2番目の列が1の場合、結果は1になります)。

これを行う簡単な方法はありますか?

答えて

2
library(dplyr)  
data %>% mutate(Q17_expected = coalesce(Q17NA_1, Q17_1)) 
+0

ありがとうございます。私は前に合体機能を見いだすことはありません - ちょうどチケット! –

関連する問題