使用不同的条件为每个变量组合两个变量

时间:2017-09-08 16:38:07

标签: r

我有两个变量(来自问卷):一个是分数范围从1-5(或NA)的分数,一个是二元变量,人们勾选以表明某个度量是"不适用& #34 ;.

我想勾选“不适用”'框(即本例中Q17NA_1中的' 1')等同于' 1'在测量变量(Q17_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)
#======================================

所以数据看起来像这样:

# 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

根据之前的回答(How to combine 2 variables and ignore NAs),我尝试了以下内容:

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

但它无法正常工作,因为它无法强制第一个条件(即第二个列为1,结果应为1)。

有直接的方法吗?

1 个答案:

答案 0 :(得分:2)

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