R 语言根据条件判断返回ABCD状态

2020-09-14 16:52:53 浏览数 (1)

这是测试公众号能不能全文跳转

@

  • 1.写一个循环
  • 2.穷举,将所有的可能都罗列上
  • 3. 使用apply函数,进行批量处理
  • 4. 用他提供的数据进行测试

前言

有朋友给我写信,问我R语言的问题,与其回复代码,不如写篇博客,顺便试试CSDN的新模板。

一、问题解析

判断是否满足某个条件,然后返回相应的值。「比如:」

  • 21~30,返回A
  • 32~40,返回B
  • ……

二、解决方案

1.写一个循环

代码如下(示例):

代码语言:javascript复制
if(x >= 22 & x <= 30){
    return("A")
  }

2.穷举,将所有的可能都罗列上

代码如下(示例):

代码语言:javascript复制
test_f = function(x){
  if(x >= 22 & x <= 30){
    return("A")
  }else if(x >=31 & x<=40){
    return("B")
  }else if(x >=41 & x <=50){
    return("C")
  }else if(x >=51 & x <=60){
    return("D")
  }else if(x >61 & x <=70){
    return("E")
  }
}

3. 使用apply函数,进行批量处理

代码语言:javascript复制
apply(dd,1,test_f)

4. 用他提供的数据进行测试

代码语言:javascript复制
dd = data.frame(age = c(22,23,24,35,36,37,45,46,47,56,57,65,67))

test_f = function(x){
  if(x >= 22 & x <= 30){
    return("A")
  }else if(x >=31 & x<=40){
    return("B")
  }else if(x >=41 & x <=50){
    return("C")
  }else if(x >=51 & x <=60){
    return("D")
  }else if(x >61 & x <=70){
    return("E")
  }
}

apply(dd,1,test_f)

dd$status = apply(dd,1,test_f)
dd

「测试结果:」

代码语言:javascript复制
> dd
   age status
1   22      A
2   23      A
3   24      A
4   35      B
5   36      B
6   37      B
7   45      C
8   46      C
9   47      C
10  56      D
11  57      D
12  65      E
13  67      E

总结

这是R语言的循环判断,是一个if函数的应用。

「更好的方法」可以用letters函数,进行自动赋值,而不用罗列全部的ABCDEFG,会智能一点。这里不再介绍。

阅读原文,体验更佳!

0 人点赞