R:按时间间隔对数据帧进行分组

R: Group data frame by time intervals

我有以下客户交易数据框:

CustID    TransID    Product    Datetime
1         1A         Milk       19:13.7
1         1A         Bread      19:13.7
2         2A         Butter     20:15.1
2         2A         Soda       20:15.1

我正在阅读文件:

df = read.csv("data.csv", as.is = TRUE)

在那种情况下,typeof(df$Datetime)character

如何从这个数据框创建三个组来反映早上、下午和晚上的交易?

基本上我希望创建三个数据框: df早上 df下午 df晚上

如果早上是从00:00.0到12:00.0等可以直接使用文本比较:

dfMorning <- df[df$DateTime < '12:00.0',]
dfAfternoon <- df[df$DateTime >= '12:00.0' & df$DateTime < '18:00.0',]
dfEvening <- df[df$DateTime >= '18:00.0',]

符合Sotos建议的不同解决方案:

breaks <- strptime(c('00:00','06:00','12:00','18:00','24:00'), '%H:%M')
labels <- c('Night', 'Morning', 'Afternoon', 'Evening')

df <- data.frame(DateTime=c('12:14.3','23:59.9','06:47.0','02:01.36'))
df$DateTime <- strptime(df$DateTime, '%H:%M')
intervals <- cut(df$DateTime, breaks=breaks, labels=labels)
res <- split(df, intervals)