R-具有日期和时间的ifelse函数

时间:2019-02-15 19:33:01

标签: r if-statement

这是我在这里的第一个问题,我对R和编程很陌生,所以可能会是一个显而易见的问题。 我有一个data.frame,其中包含“ DateTime”列,“ Night_Starts”列和“ Night_Ends”列,所有格式均为“ YYYY-MM-DD hh:mm:ss”。所有这些都是因素。 看起来像这样:

DateTime            Night_starts        Night_ends      
2018-01-31 01:52:32 2018-01-31 22:22:19 2018-01-31 04:30:08      
2018-02-02 03:24:28 2018-02-02 22:19:14 2018-02-02 04:33:47       
2018-02-03 08:29:52 2018-02-03 22:17:40 2018-02-03 04:35:37  
2018-03-16 21:45:23 2018-03-16 21:04:09 2018-03-16 05:38:54 

我想创建一个名为“ Day_or_night”的第四列,如果“ DateTime”在“ NightStarts”和“ NightEnds”之间,并且在“ DAY”之间,则我希望在其中具有“ NIGHT”。 如果我编码

mydata$Day_or_night<-ifelse(mydata$DateTime >= mydata$Night_Starts & mydata$DateTime <= mydata$Night_Ends,"NIGHT","DAY")

显然我收到的消息是

Warning messages:
1: In Ops.factor(mydata$DateTime, mydata$Night_Starts) :
  ‘>=’ not meaningful for factors
2: In Ops.factor(mydata$DateTime, mydata$Night_Ends) :
  ‘<=’ not meaningful for factors

我试图将因子转换为数字或字符,但是它不起作用,因为结果看起来像这样:

DateTime            Night_starts        Night_ends          Day_or_night
2018-01-31 01:52:32 2018-01-31 22:22:19 2018-01-31 04:30:08 DAY      
2018-02-02 03:24:28 2018-02-02 22:19:14 2018-02-02 04:33:47 DAY       
2018-02-03 08:29:52 2018-02-03 22:17:40 2018-02-03 04:35:37 DAY  
2018-03-16 21:45:23 2018-03-16 21:04:09 2018-03-16 05:38:54 DAY 

很明显,第三行应为“ NIGHT”。我知道这是一个愚蠢的问题,可能会有一个简单的答案,但现在我找不到它。

0 个答案:

没有答案