多个if else语句

时间:2013-01-28 19:35:14

标签: r if-statement conditional-statements

我正在尝试根据条件语句为列分配值,但POSIXct格式似乎让我失望。我有一段时间,并希望将它们分配到白天/黑夜/黎明/黄昏这样的事情:

if(t40636$time>t40636$dawn.b&t40636$time<t40636$dawn.e){
  t40636$time.periods=1
} else {
  if(t40636$time>t40636$mid.day.b&t40636$time<t40636$mid.day.e){
    t40636$time.periods=2
  } else {
    if(t40636$time>t40636$dusk.b&t40636$time<t40636$dusk.e){
      t40636$time.periods=3
    } else {
      if(t40636$time>t40636$mid.night.b&t40636$time<t40636$mid.night.e){
        t40636$time.periods=4
        } else {
          t40636$time.periods=0
        }
    }
  }
}

但是,由于列的格式,此代码不起作用,并产生下面的矩阵(time.periods列中只有0)。

     Date Temp..ºC. Depth..m. Light  time time.at.depth dawn.b dawn.e dusk.b
1 2012-06-19     14.47     -21.5   255 15:32             0  01:42  04:42  19:13
2 2012-06-19     16.99     -20.2   255 15:37             5  01:42  04:42  19:13
3 2012-06-19     12.60     -18.8   255 15:41             4  01:42  04:42  19:13
4 2012-06-19     16.36     -17.5   255 15:46             5  01:42  04:42  19:13
5 2012-06-19     16.36     -13.4   255 15:51             5  01:42  04:42  19:13
6 2012-06-19     17.94      -2.7   255 15:56             5  01:42  04:42  19:13
  dusk.e mid.day.b mid.day.e mid.night.b mid.night.e time.periods
1  22:13     10:27     13:27       22:27       01:27            0
2  22:13     10:27     13:27       22:27       01:27            0
3  22:13     10:27     13:27       22:27       01:27            0
4  22:13     10:27     13:27       22:27       01:27            0
5  22:13     10:27     13:27       22:27       01:27            0
6  22:13     10:27     13:27       22:27       01:27            0

ifelse产生的东西接近我想要的东西,但我不能用它做多个陈述。非常感谢任何建议。

t40636$time.periods=ifelse(t40636$time>t40636$dawn.b&t40636$time<t40636$dawn.e,1,0)

1 个答案:

答案 0 :(得分:0)

“修复我的多个if-else语句”的答案几乎总是“不要使用多个if-else结构。”

R语言有一个非常好的switch函数,其帮助页面有一些很好的例子。