我有一个数据框,其中包含一系列名称以相同字符开头的变量:
dat<-data.frame(q1.1=sample(c('answered', NA), 10000, replace=TRUE),
q1.2=sample(c('answered', NA), 10000, replace=TRUE),
q1.3=sample(c('answered', NA), 10000, replace=TRUE),
q1.4=sample(c('answered', NA), 10000, replace=TRUE),
q1.5=sample(c('answered', NA), 10000, replace=TRUE),
q1.6=sample(c('answered', NA), 10000, replace=TRUE),
q1.7=sample(c('answered', NA), 10000, replace=TRUE),
q1.8=sample(c('answered', NA), 10000, replace=TRUE))
我想根据这些变量创建一个新变量,其中所有这些变量都是 NA 的观察值以一种方式编码(如“否”),其余观察值以另一种方式编码(如“是”) ).我知道这可以通过以下方式完成,但我觉得它太啰嗦了(尤其是在同一个脚本中必须多次完成时):
library(tidyverse)
dat<- dat %>% mutate(new_var=ifelse(is.na(q1.1) &
is.na(q1.2) &
is.na(q1.3)&
is.na(q1.4)&
is.na(q1.5)&
is.na(q1.6)&
is.na(q1.7)&
is.na(q1.8),
"no",
"yes"))
是否可以这样写,如果所有以 q1 开头的变量都是 NA,则新变量应编码为“no”,否则应编码为“yes”。我曾尝试像这样 dat<- dat %>% mutate(new_var=ifelse( is.na(contains("q1")),"No","Yes"))
执行此方法,但出现错误。