所以,我正在为学校做一个R代码项目,有36个列(9个与列超类别考试相关,8个与写作相关,4个与协作相关,15个与其他相关)的分类变量,每个都有级别“1次”,“2-4次”和“> 4次”。我想写一个布尔语句,找到任何这些列至少有“1次”的行,我有这个:
SurveyDataSP16$SerOff <- factor(ifelse(((SurveyDataSP16$Exams_A=="1 time"|SurveyDataSP16$Exams_A=="2-4 times"|SurveyDataSP16$Exams_A==">4 times")|(SurveyDataSP16$Exams_B=="1 time"|SurveyDataSP16$Exams_B=="2-4 times"|SurveyDataSP16$Exams_B==">4 times")|(SurveyDataSP16$Exams_C=="1 time"|SurveyDataSP16$Exams_C=="2-4 times"|SurveyDataSP16$Exams_C==">4 times")|(SurveyDataSP16$Exams_D=="1 time"|SurveyDataSP16$Exams_D=="2-4 times"|SurveyDataSP16$Exams_D==">4 times")|(SurveyDataSP16$Exams_E=="1 time"|SurveyDataSP16$Exams_E=="2-4 times"|SurveyDataSP16$Exams_E==">4 times")|(SurveyDataSP16$Exams_F=="1 time"|SurveyDataSP16$Exams_F=="2-4 times"|SurveyDataSP16$Exams_F==">4 times")|(SurveyDataSP16$Exams_G=="1 time"|SurveyDataSP16$Exams_G=="2-4 times"|SurveyDataSP16$Exams_G==">4 times")| (SurveyDataSP16$Exams_H=="1 time"|SurveyDataSP16$Exams_H=="2-4 times"|SurveyDataSP16$Exams_H==">4 times")|(SurveyDataSP16$Exams_I=="1 time"|SurveyDataSP16$Exams_I=="2-4 times"|SurveyDataSP16$Exams_I==">4 times"))|((SurveyDataSP16$Writing_A=="1 time"|SurveyDataSP16$Writing_A=="2-4 times"|SurveyDataSP16$Writing_A==">4 times")| (SurveyDataSP16$Writing_B=="1 time"|SurveyDataSP16$Writing_B=="2-4 times"|SurveyDataSP16$Writing_B==">4 times")|(SurveyDataSP16$Writing_C=="1 time"|SurveyDataSP16$Writing_C=="2-4 times"|SurveyDataSP16$Writing_C==">4 times")|(SurveyDataSP16$Writing_D=="1 time"|SurveyDataSP16$Writing_D=="2-4 times"|SurveyDataSP16$Writing_D==">4 times")|(SurveyDataSP16$Writing_E=="1 time"|SurveyDataSP16$Writing_E=="2-4 times"|SurveyDataSP16$Writing_E==">4 times")| (SurveyDataSP16$Writing_F=="1 time"|SurveyDataSP16$Writing_F=="2-4 times"|SurveyDataSP16$Writing_F==">4 times")|(SurveyDataSP16$Writing_G=="1 time"|SurveyDataSP16$Writing_G=="2-4 times"|SurveyDataSP16$Writing_G==">4 times")) |((SurveyDataSP16$Collaboration_A=="1 time"|SurveyDataSP16$Collaboration_A=="2-4 times"|SurveyDataSP16$Collaboration_A==">4 times")|(SurveyDataSP16$Collaboration_B=="1 time"|SurveyDataSP16$Collaboration_B=="2-4 times"|SurveyDataSP16$Collaboration_B==">4 times")|(SurveyDataSP16$Collaboration_C=="1 time"|SurveyDataSP16$Collaboration_C=="2-4 times"|SurveyDataSP16$Collaboration_C==">4 times")|(SurveyDataSP16$Collaboration_D=="1 time"|SurveyDataSP16$Collaboration_D=="2-4 times"|SurveyDataSP16$Collaboration_D==">4 times"))|((SurveyDataSP16$Other_A=="1 time"|SurveyDataSP16$Other_A=="2-4 times"|SurveyDataSP16$Other_A==">4 times")|(SurveyDataSP16$Other_B=="1 time"|SurveyDataSP16$Other_B=="2-4 times"|SurveyDataSP16$Other_B==">4 times")|(SurveyDataSP16$Other_C=="1 time"|SurveyDataSP16$Other_C=="2-4 times"|SurveyDataSP16$Other_C==">4 times")|(SurveyDataSP16$Other_D=="1 time"|SurveyDataSP16$Other_D=="2-4 times"|SurveyDataSP16$Other_D==">4 times")|(SurveyDataSP16$Other_E=="1 time"|SurveyDataSP16$Other_E=="2-4 times"|SurveyDataSP16$Other_E==">4 times")|(SurveyDataSP16$Other_F=="1 time"|SurveyDataSP16$Other_F=="2-4 times"|SurveyDataSP16$Other_F==">4 times")|(SurveyDataSP16$Other_G=="1 time"|SurveyDataSP16$Other_G=="2-4 times"|SurveyDataSP16$Other_G==">4 times")| (SurveyDataSP16$Other_H=="1 time"|SurveyDataSP16$Other_H=="2-4 times"|SurveyDataSP16$Other_H==">4 times")|(SurveyDataSP16$Other_I=="1 time"|SurveyDataSP16$Other_I=="2-4 times"|SurveyDataSP16$Other_I==">4 times")|(SurveyDataSP16$Other_J=="1 time"|SurveyDataSP16$Other_J=="2-4 times"|SurveyDataSP16$Other_J==">4 times")|(SurveyDataSP16$Other_K=="1 time"|SurveyDataSP16$Other_K=="2-4 times"|SurveyDataSP16$Other_K==">4 times")|(SurveyDataSP16$Other_L=="1 time"|SurveyDataSP16$Other_L=="2-4 times"|SurveyDataSP16$Other_L==">4 times")|(SurveyDataSP16$Other_M=="1 time"|SurveyDataSP16$Other_M=="2-4 times"|SurveyDataSP16$Other_M==">4 times")|(SurveyDataSP16$Other_N=="1 time"|SurveyDataSP16$Other_N=="2-4 times"|SurveyDataSP16$Other_N==">4 times")|(SurveyDataSP16$Other_O=="1 time"|SurveyDataSP16$Other_O=="2-4 times"|SurveyDataSP16$Other_O==">4 times")), "yes", "no"))
有更短的方法吗?
答案 0 :(得分:0)
首先我创建了一些虚拟数据并添加了#34; 0次&#34;在可能的水平:
nam <- " factor(ifelse(((SurveyDataSP16$Exams_A==1 time|SurveyDataSP16$Exams_A==2-4 times|SurveyDataSP16$Exams_A==>4 times)|(SurveyDataSP16$Exams_B==1 time|SurveyDataSP16$Exams_B==2-4 times|SurveyDataSP16$Exams_B==>4 times)|(SurveyDataSP16$Exams_C==1 time|SurveyDataSP16$Exams_C==2-4 times|SurveyDataSP16$Exams_C==>4 times)|(SurveyDataSP16$Exams_D==1 time|SurveyDataSP16$Exams_D==2-4 times|SurveyDataSP16$Exams_D==>4 times)|(SurveyDataSP16$Exams_E==1 time|SurveyDataSP16$Exams_E==2-4 times|SurveyDataSP16$Exams_E==>4 times)|(SurveyDataSP16$Exams_F==1 time|SurveyDataSP16$Exams_F==2-4 times|SurveyDataSP16$Exams_F==>4 times)|(SurveyDataSP16$Exams_G==1 time|SurveyDataSP16$Exams_G==2-4 times|SurveyDataSP16$Exams_G==>4 times)| (SurveyDataSP16$Exams_H==1 time|SurveyDataSP16$Exams_H==2-4 times|SurveyDataSP16$Exams_H==>4 times)|(SurveyDataSP16$Exams_I==1 time|SurveyDataSP16$Exams_I==2-4 times|SurveyDataSP16$Exams_I==>4 times))|((SurveyDataSP16$Writing_A==1 time|SurveyDataSP16$Writing_A==2-4 times|SurveyDataSP16$Writing_A==>4 times)| (SurveyDataSP16$Writing_B==1 time|SurveyDataSP16$Writing_B==2-4 times|SurveyDataSP16$Writing_B==>4 times)|(SurveyDataSP16$Writing_C==1 time|SurveyDataSP16$Writing_C==2-4 times|SurveyDataSP16$Writing_C==>4 times)|(SurveyDataSP16$Writing_D==1 time|SurveyDataSP16$Writing_D==2-4 times|SurveyDataSP16$Writing_D==>4 times)|(SurveyDataSP16$Writing_E==1 time|SurveyDataSP16$Writing_E==2-4 times|SurveyDataSP16$Writing_E==>4 times)| (SurveyDataSP16$Writing_F==1 time|SurveyDataSP16$Writing_F==2-4 times|SurveyDataSP16$Writing_F==>4 times)|(SurveyDataSP16$Writing_G==1 time|SurveyDataSP16$Writing_G==2-4 times|SurveyDataSP16$Writing_G==>4 times)) |((SurveyDataSP16$Collaboration_A==1 time|SurveyDataSP16$Collaboration_A==2-4 times|SurveyDataSP16$Collaboration_A==>4 times)|(SurveyDataSP16$Collaboration_B==1 time|SurveyDataSP16$Collaboration_B==2-4 times|SurveyDataSP16$Collaboration_B==>4 times)|(SurveyDataSP16$Collaboration_C==1 time|SurveyDataSP16$Collaboration_C==2-4 times|SurveyDataSP16$Collaboration_C==>4 times)|(SurveyDataSP16$Collaboration_D==1 time|SurveyDataSP16$Collaboration_D==2-4 times|SurveyDataSP16$Collaboration_D==>4 times))|((SurveyDataSP16$Other_A==1 time|SurveyDataSP16$Other_A==2-4 times|SurveyDataSP16$Other_A==>4 times)|(SurveyDataSP16$Other_B==1 time|SurveyDataSP16$Other_B==2-4 times|SurveyDataSP16$Other_B==>4 times)|(SurveyDataSP16$Other_C==1 time|SurveyDataSP16$Other_C==2-4 times|SurveyDataSP16$Other_C==>4 times)|(SurveyDataSP16$Other_D==1 time|SurveyDataSP16$Other_D==2-4 times|SurveyDataSP16$Other_D==>4 times)|(SurveyDataSP16$Other_E==1 time|SurveyDataSP16$Other_E==2-4 times|SurveyDataSP16$Other_E==>4 times)|(SurveyDataSP16$Other_F==1 time|SurveyDataSP16$Other_F==2-4 times|SurveyDataSP16$Other_F==>4 times)|(SurveyDataSP16$Other_G==1 time|SurveyDataSP16$Other_G==2-4 times|SurveyDataSP16$Other_G==>4 times)| (SurveyDataSP16$Other_H==1 time|SurveyDataSP16$Other_H==2-4 times|SurveyDataSP16$Other_H==>4 times)|(SurveyDataSP16$Other_I==1 time|SurveyDataSP16$Other_I==2-4 times|SurveyDataSP16$Other_I==>4 times)|(SurveyDataSP16$Other_J==1 time|SurveyDataSP16$Other_J==2-4 times|SurveyDataSP16$Other_J==>4 times)|(SurveyDataSP16$Other_K==1 time|SurveyDataSP16$Other_K==2-4 times|SurveyDataSP16$Other_K==>4 times)|(SurveyDataSP16$Other_L==1 time|SurveyDataSP16$Other_L==2-4 times|SurveyDataSP16$Other_L==>4 times)|(SurveyDataSP16$Other_M==1 time|SurveyDataSP16$Other_M==2-4 times|SurveyDataSP16$Other_M==>4 times)|(SurveyDataSP16$Other_N==1 time|SurveyDataSP16$Other_N==2-4 times|SurveyDataSP16$Other_N==>4 times)|(SurveyDataSP16$Other_O==1 time|SurveyDataSP16$Other_O==2-4 times|SurveyDataSP16$Other_O==>4 times)), yes, no))"
nam <- unlist(strsplit(nam, split = "SP16"))
nam <- strsplit(nam, split = "==")
nam <- unlist(lapply(nam, `[[`, 1))[-1]
nam <- nam[!duplicated(nam)]
nam <- substr(nam, 2, 999)
tmp <- c(rep("0 time", 100), "1 time", "2-4 times", ">4 times")
SurveyDataSP16 <- matrix(sample(tmp, 35*10, replace=T), ncol=35)
colnames(SurveyDataSP16) <- nam
SurveyDataSP16 <- as.data.frame(SurveyDataSP16)
这是我的解决方案
tmp <- apply(SurveyDataSP16, 2, is.element, set=c("1 time", "2-4 times", ">4 times"))
apply(tmp, 1, any)