首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中创建时间间隔

在R中创建时间间隔
EN

Stack Overflow用户
提问于 2018-05-14 11:17:34
回答 1查看 1.8K关注 0票数 0

我有一个R的数据集,有两万个条目。每个条目都有其发生的特定时间和日期。我想创造每6小时的时间间隔,即上午6点到下午12点,下午12点到下午6点.以此类推,确保数据被相应地排序。不需要日期,我只需要根据时间间隔对数据进行排序。

例如,如果条目的时间为12:35 PM,它将被排序为12 PM -6 PM间隔。

所有想法都是欢迎的。S.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-14 18:40:16

代码语言:javascript
运行
复制
# create a dataframe with a column that represents a time
df <- data.frame(MyTimes = c("02:50:00","06:00:00", "11:10:30", "13:15:50", "17:00:00", "23:45:20"), 
                 stringsAsFactors=FALSE)

# create a "time interval" column
df$Interval <- NA
df$Interval[df$MyTimes %between% c("00:00:00", "06:00:00")] <- "0 AM - 6 AM"
df$Interval[df$MyTimes %between% c("06:00:00", "12:00:00")] <- "6 AM - 12 PM"
df$Interval[df$MyTimes %between% c("12:00:00", "18:00:00")] <- "12 PM - 6 PM"
df$Interval[df$MyTimes %between% c("18:00:00", "24:00:00")] <- "6 PM - 0 AM"
df
#    MyTimes     Interval
# 1 02:50:00  0 AM - 6 AM
# 2 06:00:00 6 AM - 12 PM
# 3 11:10:30 6 AM - 12 PM
# 4 13:15:50 12 PM - 6 PM
# 5 17:00:00 12 PM - 6 PM
# 6 23:45:20  6 PM - 0 AM

更有效的方法是先转换为秒,然后使用findInterval()

代码语言:javascript
运行
复制
   df$seconds <- period_to_seconds(hms(df$MyTimes))
    myIntervals <- c("0 AM - 6 AM", "6 AM - 12 PM", "12 PM - 6 PM", "6 PM - 0 AM")
    df$Interval<- myIntervals[findInterval(df$seconds, c(0, 6, 12, 18, 24) * 3600)]
    #    MyTimes     Interval seconds
    # 1 02:50:00  0 AM - 6 AM   10200
    # 2 06:00:00 6 AM - 12 PM   21600
    # 3 11:10:30 6 AM - 12 PM   40230
    # 4 13:15:50 12 PM - 6 PM   47750
    # 5 17:00:00 12 PM - 6 PM   61200
    # 6 23:45:20  6 PM - 0 AM   85520
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50328989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档