在R中使用带间隔的ifelse()作为条件表达式

时间:2019-04-14 14:44:18

标签: r if-statement

我的数据集如下:

> head(GLM_df)
# A tibble: 6 x 9
# Groups:   hour [6]
   hour Feeding Foraging Standing ID    Area     Feeding_Foraging Feeding_Standing Standing_Foraging
  <int>   <dbl>    <dbl>    <dbl> <chr> <chr>               <dbl>            <dbl>             <dbl>
1     0    3.5      23.3     1    41361 Seronera             26.8             4.5               24.3
2     1    2.71     24.2     1    41361 Seronera             26.9             3.71              25.2
3     2    2.5      24.3     2    41361 Seronera             26.8             4.5               26.3
4     3    6.88     18.7     3.89 41361 Seronera             25.5            10.8               22.6
5     4    7.5      17.6     3.67 41361 Seronera             25.1            11.2               21.3
6     5    7.22     19.6     2.45 41361 Seronera             26.8             9.67              22.1

我只是想添加一列Day_Night,对于DayGLM_df$hour之间的6中的值,该列将具有18 Night否则。

我尝试使用下面的表达式,但出现以下错误:

> GLM_df$Day_Night<-ifelse(GLM_df$hour==(6:18),Day,Night)
Error in ifelse(GLM_df$hour == (6:18), Day, Night) : 
  object 'Day' not found
In addition: Warning message:
In GLM_df$hour == (6:18) :
  longer object length is not a multiple of shorter object length

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

尝试使用// Year, Month 0-11, Day, Hour, Min (Optional: sec, ms) var eta_ms = new Date(2020, 4, 14, 0, 0).getTime() - Date.now(); var timeout = setTimeout(function(){ // TODO: This will run at the date above! }, eta_ms);

findInterval()

答案 1 :(得分:2)

简单地:

library(tidyverse)
data %>% mutate(day_night = ifelse( hour %in% 6:18, "day", "night"))

或者:

data$day_night <- ifelse( data$hour %in% 6:18, "day", "night")

答案 2 :(得分:0)

使用data.table

GLM_df <- as.data.table(GLM_df)
GLM_df[hour %in% c(6:18), Day_Night:="Day"]
GLM_df[!hour %in% c(6:18), Day_Night:="Night"]