我有两个变量(来自问卷):一个是分数范围从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)。
有直接的方法吗?
答案 0 :(得分:2)
library(dplyr)
data %>% mutate(Q17_expected = coalesce(Q17NA_1, Q17_1))