基于R利用if语句套嵌进行多重条件判断

我们知道在R中if语句可以帮助我们进行条件判断,常用于修改变量,做出条件选择等等,对于条件为二分类的判断非常有帮助,
基于R利用if语句套嵌进行多重条件判断_第1张图片
比如我们想判断学生的成绩是否及格,60分以上算是及格

ifelse(n>60,paste("及格"),paste("及格"))

在这里插入图片描述
但是如果条件是多个选择的,比如我们想把学生的成绩分成100-90分的为优,90-80为良,80-60的为及格,60以下的为不及格。如果在python中可以使用if, elif语句进行分类,在但是R中就不这么好弄了。
其实我们可以通过ifelse的格式套嵌解决这个问题,写成代码就是

if(boolean_expression 1) {
   // Executes when the boolean expression 1 is true.
} else if( boolean_expression 2) {
   // Executes when the boolean expression 2 is true.
} else if( boolean_expression 3) {
   // Executes when the boolean expression 3 is true.
} else {
   // executes when none of the above condition is true.
}

带入我们的案例就是

p<-65
if (n>=90)
  paste("优") else if (p<90 & p >=80)
    paste("良") else if (p<80 & p>=60)
      paste("及格") else if (p<60)
        paste("不及格")

基于R利用if语句套嵌进行多重条件判断_第2张图片
我们可以制作成function可以随时进行判断

g2<-function(p){
  if (n>=90)
    paste("优") else if (p<90 & p >=80)
      paste("良") else if (p<80 & p>=60)
        paste("及格") else if (p<60)
          paste("不及格")
}

基于R利用if语句套嵌进行多重条件判断_第3张图片
有人想问这样有啥用,我们可以把它做成一个大循环的条件判断语句,进行判断。下面我们上一个实际数据来演示一下

states<-read.csv("E:/r/test/Murder.csv",sep=',',header=TRUE)

基于R利用if语句套嵌进行多重条件判断_第4张图片
该数据为美国各个州的谋杀犯罪率数据(公众号回复:谋杀数据,可以获得数据),Population:人数;Income:收入;Illiteracy:文盲率;Life Exp:寿命;Murder:凶杀案发生率(每10万人);HS Grad:高中毕业率;Frost:气温低于冰冻的天数;Area:每平方英里的陆地面积。
假设我们想知道凶杀案发生和什么原因有关,然后相关的因素用号表示出来,而且号越多,相关程度越大。
我们使用统计值来表示相关程度,P来表示号,假设P小于0.1为,P小于0.05为**,P小于0.01为***,P大于0.1为无统计学意义,那么R的表达式为

g1<-function(p){
  if (p<=0.01)
    paste("***") else if (p<=0.05 & p>0.01)
      paste("**") else if (p<=0.1 & p>0.05)
        paste("*") else
          paste("无统计学意义")
}

OK,设计好这个判断之后,我们只要把和Murder:凶杀案发生率相关因素的P值求出来,然后直接使用这个function(程序)来判断就可以了
先设计两个空值

result2<-c()
result3<-c()

做个循环

var<-c("Population","Illiteracy","Life.Exp","Area")
for(i in 1:4){
  fit<-lm(substitute(Murder~x+Frost+Income,list(x=as.name(var[i]))),data = states)##建立线性回归模型
  p<-g1(p<-coef(summary(fit))[2,c(4)])
  result2<-rbind(result2,c(colnames(states)[i],coef(summary(fit))[2,c(1,2,4)]))
  result3<-cbind(result2,p)
}

如图所示,result3就是我们需要的结果
基于R利用if语句套嵌进行多重条件判断_第5张图片
基于R利用if语句套嵌进行多重条件判断_第6张图片

从上图我们可以看出,每个指标的系数,P值相关性都列出来了,我们在后面添加了号表示相关程度,这在数据挖掘中十分有用,假设您刚拿到一个庞大的数据,里面有上百个变量,或者是基因数据,您不知道哪个变量(基因)和结果相关,做个筛查看看哪个基因标有号就可以进行快速的初筛,后面可以在慢慢仔细研究。
基于R利用if语句套嵌进行多重条件判断_第7张图片

你可能感兴趣的:(R语言,数据挖掘,r语言,开发语言)