【问题标题】:R: Group data frame by time intervalsR:按时间间隔对数据帧进行分组
【发布时间】:2016-12-09 09:08:18
【问题描述】:

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

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晚上

【问题讨论】:

  • 你想要?cut?split

标签: r machine-learning transactions rstudio data-science


【解决方案1】:

如果早上是从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',]

【讨论】:

  • 感谢您的成功。出于好奇,如何将时间转换为正确的格式?我试过strptime,但没用。
【解决方案2】:

符合 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2021-07-07
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2017-11-24
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多