【发布时间】:2020-03-29 15:52:11
【问题描述】:
假设收集了几十个科目的问卷,我想检查每个问题的答案是否正确。为了实现这种逐列操作,我使用了mapply 函数,其中向量化的对分别是列(多个变量)和向量(多个元素),有关详细信息,请参见下面的演示代码。但是,使用这种方法,我需要手动生成变量以将其合并到原始数据框中,因此,我想知道是否有另一种方法可以使用mutate函数的多元版本实现类似的效果在 dplyr 包中?这样就不需要手动生成变量的名称,并以向量化的方式实现。
##simulated data generation with four questions
IDs<-paste0('subj',0,1:7)
Q1<-c('A','B','C','A','A','A','D')
Q2<-c('A','B','B','B','B','D','C')
Q3<-c('B','B','C','C','C','D','C')
Q4<-c('A','D','D','B','D','D','C')
vect<-data.frame(cbind(IDs,Q1,Q2,Q3,Q4))
##answer for the four questions
answer<-c('A','B','C','D')
##method with mapply function
myfunc<-function(vec,value) {
ifelse(vec==value, TRUE, FALSE)
}
newvariable<-mapply(myfunc, vect[,2:5], answer)
colnames(newvariable)<-paste0('Q',1:4,"_ans")
newvariable
vect_new1<-cbind(vect,newvariable)
vect_new1
【问题讨论】: