如果语句循环仅应用第一个元素,则返回R [英] R if statement loop applied the first element only

查看:58
本文介绍了如果语句循环仅应用第一个元素,则返回R的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为x的DF,其中包含2个变量,分别是小时和时间.

I have a DF named x contains 2 variables hour and timeofday.

我确实需要根据以下规则为timeofday变量提供4个不同的值:

I do need to give 4 different values to timeofday variable according to the following rules :

if (x$hour>=0 & x$hour<6){x$timeofday<-"midnight"} else
  if(x$hour>=6 & x$hour<12) {x$timeofday<-"morning"} else
    if (x$hour>=12 & x$hour<18) {x$timeofday<-"afternoon"} else
    {x$timeofday<-"night"}

不幸的是,只有第一个规则午夜"适用于所有条件.

Unfortunately only the first rule "midnight" is applied to all conditions.

   timeofday hour
1   midnight    0
2   midnight    1
3   midnight    2
4   midnight    3
5   midnight    4
6   midnight    5
7   midnight    6
8   midnight    7
9   midnight    8
10  midnight    9
11  midnight   10
12  midnight   11
13  midnight   12
14  midnight   13
15  midnight   14
16  midnight   15
17  midnight   16
18  midnight   17
19  midnight   18
20  midnight   19
21  midnight   20
22  midnight   21
23  midnight   22
24  midnight   23
25  midnight    0
26  midnight    1
27  midnight    2
28  midnight    3
29  midnight    4
30  midnight    6

非常感谢您的支持,谢谢

Your support is much appreciated, Thank you

推荐答案

mtoto也指出,ifelse是矢量化的,而if不是.因此,这将是您的解决方案:

As pointed out by mtoto as well, ifelse is vectorized while if not. So this will be your solution:

x$timeofday<-ifelse(x$hour>=0 & x$hour<6,"midnight",
       ifelse(x$hour>=6 & x$hour<12,"morning",
              ifelse(x$hour>=12 & x$hour<18,"afternoon","night")))

这篇关于如果语句循环仅应用第一个元素,则返回R的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆