R 选择仅包含时间x和时间y之间的时间的行

R 选择仅包含时间x和时间y之间的时间的行,r,if-statement,dataframe,time-series,R,If Statement,Dataframe,Time Series,我有一个带有df$time列的时间序列。我还有一个列,包含当天的日出时间(df$sunrise)和日落时间(df$sunset) 我想把我的数据分成两部分,白天和晚上。也就是说,我想选择白天时间在日出和日落之间,晚上时间在日落和日出之间的行 我不知道最好的办法是什么。可以在ifelse语句中使用时间吗?或者有什么功能可以帮助我,但我不知道 df$时间当前存储为一个因子。df$Sunrise和df$Sunset存储为POSIXct 我的数据示例: Time Sunrise

我有一个带有df$time列的时间序列。我还有一个列,包含当天的日出时间(df$sunrise)和日落时间(df$sunset)

我想把我的数据分成两部分,白天和晚上。也就是说,我想选择白天时间在日出和日落之间,晚上时间在日落和日出之间的行

我不知道最好的办法是什么。可以在ifelse语句中使用时间吗?或者有什么功能可以帮助我,但我不知道

df$时间当前存储为一个因子。df$Sunrise和df$Sunset存储为POSIXct

我的数据示例:

Time       Sunrise               Sunset
00:01:00   2009-09-17 07:41:30   2009-09-17 20:05:30
00:02:00   2009-09-17 07:41:30   2009-09-17 20:05:30
00:02:00   2009-09-17 07:41:30   2009-09-17 20:05:30
00:04:00   2009-09-17 07:41:30   2009-09-17 20:05:30

在这个示例中,我希望所有显示的时间都显示为夜晚。

df.daydf$Sunrise&df$Time这将有望澄清问题

df.day<-df[df$Time>df$Sunrise & df$Time<df$Sunset, ]
df.night<-df[df$Time<df$Sunrise & df$Time>df$Sunset, ]
# read in (slightly edited) data
df<-data.frame(Time=c("07:40:00","07:42:00","15:02:00","20:06:00"),Sunrise=c("2009-09-17    07:41:30","2009-09-17 07:41:30","2009-09-17 07:41:30","2009-09-17 07:41:30"),Sunset=c("2009-09-17 20:05:30", "2009-09-17 20:05:30", "2009-09-17 20:05:30", "2009-09-17 20:05:30"))

# convert character to POSIXct
df$Sunrise<-as.POSIXct(df$Sunrise,format="%Y-%m-%d %H:%M:%S")
df$Sunset<-as.POSIXct(df$Sunset,format="%Y-%m-%d %H:%M:%S")

# add date to Time variable and convert to POSIXct
df$Time<-as.POSIXct(paste(strptime(df$Sunrise,"%Y-%m-%d"),df$Time),format="%Y-%m-%d %H:%M:%S")

# identify times during the day
df.day<-df[df$Time>df$Sunrise & df$Time<df$Sunset, ]
# identify times NOT during the day
df.night<-df[!(df$Time>df$Sunrise & df$Time<df$Sunset), ]
#读入(轻微编辑)数据

你能展示一些样本数据吗?了解df$Time是否存储为日期、数字或字符值以及这些值是什么样子很重要。谢谢,它似乎适用于日间数据帧,但返回0个夜间观测值,返回的值都不在日落和日出之间。我被难住了。