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)
我有以下客户交易数据框:
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)