ID <- 1:6
math <- c("YES","NO","YES","NO",NA,NA)
history <- c(NA,NA,"NO","NO","YES",NA)
dt <- data.frame(ID, math, history)
ID math history
1 1 YES <NA>
2 2 NO <NA>
3 3 YES NO
4 4 NO NO
5 5 <NA> YES
6 6 <NA> <NA>
我想增加一列("通过"),如下所示
-
如果一个学生至少有一次说"是":"是"
-
如果学生没有得到"是"
- 如果两名受试者都缺少数据:NA
- 如果其中一个主题为"否":"否"
因此,这些列将如下所示:
> dt
ID math history pass
1 1 YES <NA> YES
2 2 NO <NA> NO
3 3 YES NO YES
4 4 NO NO NO
5 5 <NA> YES YES
6 6 <NA> <NA> <NA>
我试着用
dt$pass <- ifelse(rowSums(dt[,-1]=="YES",na.rm=T)>0,"YES","NO")
这是代码,但很棘手
如果我输入na.rm=FALSE
,则只考虑同时拥有这两个科目数据的学生.
在我的数据中,我有很多专栏,不仅仅是数学和历史.