【问题标题】:conditional statement in rr中的条件语句
【发布时间】:2014-02-05 23:23:02
【问题描述】:

我正在努力在 R 中编写 if then 语句。我有一个名为 diel 的变量,我希望这个变量术语是“白天”或“夜晚”,基于名为 @ 的变量的值987654322@。我先在 SAS 中编写代码,它看起来像这样:

 length diel $5;
 if 7 <= hour < 17 then diel = 'day';
 if 19 <= hour <= 24 then diel = 'night';
 if 0 <= hour < 5 then diel = 'night';
 run;

如您所见,黄昏 (17-19) 和黎明 (5-7) 的时间被忽略了。这确实是我在 R 中遇到的问题,我不知道如何忽略黄昏和黎明。当我写的时候:

dat4$diel <- ifelse ((dat4$hour)< 17, ifelse((dat4$hour) <=7,"day","night"),"night")      

它将白天的正确时间标记为正确的时间,但将其他所有时间标记为夜晚。当我尝试任何其他组合时,例如添加另一个 ifelse 语句,如果覆盖第一个语句并将所有时间标记为一天。感谢您的任何建议!

【问题讨论】:

  • 看起来你重复了两次 SAS 代码。我保留了它,因为我不确定你应该删除它。
  • 我有点困惑。您的数据集中是否没有任何黄昏或黎明数据,即hour 的值永远不会介于 5 和 7 之间,也不会介于 17 和 19 之间?如果您确实有黄昏/黎明数据,您希望它如何标记?
  • 为什么要使用单行而不是创建一个简单易读的函数?

标签: r variables if-statement conditional


【解决方案1】:

这样的事情可能会做:

hour <- 0:24
c('night', NA, 'day', NA, 'night')[findInterval(hour, c(0,5,7,17,19,24), rightmost.closed=TRUE)]
##  [1] "night" "night" "night" "night" "night" NA      NA     
##  [8] "day"   "day"   "day"   "day"   "day"   "day"   "day"  
## [15] "day"   "day"   "day"   NA      NA      "night" "night"
## [22] "night" "night" "night" "night"

【讨论】:

    【解决方案2】:

    我会这样做:

    dat = data.frame(hour =0:24)
    transform(dat,diel  =ifelse( hour < 17 & hour >=7 , 'day',
                                 ifelse(hour>=19 | hour <5,'night',NA)))
    
         hour  diel
    1     0 night
    2     1 night
    3     2 night
    4     3 night
    5     4 night
    6     5  <NA>
    7     6  <NA>
    8     7   day
    9     8   day
    10    9   day
    11   10   day
    12   11   day
    13   12   day
    14   13   day
    15   14   day
    16   15   day
    17   16   day
    18   17  <NA>
    19   18  <NA>
    20   19 night
    21   20 night
    22   21 night
    23   22 night
    24   23 night
    25   24 night
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-12
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 2021-02-02
      • 2022-06-21
      • 2014-10-23
      相关资源
      最近更新 更多