首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤日内数据R

过滤日内数据R
EN

Stack Overflow用户
提问于 2017-11-07 14:01:54
回答 3查看 178关注 0票数 0

我试图过滤当天的数据,使其只包括一天中的特定时段。在某些包中是否有实现这一目标的诀窍。下面是示例数据:

代码语言:javascript
复制
library(tibbletime)

example <- as.tibble(data.frame(
  date = ymd_hms(seq(as.POSIXct("2017-01-01 09:00:00"), as.POSIXct("2017-01-02 20:00:00"), by="min")),
  value = rep(1, 2101)))

我想每天只包括10:00- 18:35:00,但不能很好地做到这一点。目前,我的解决方案是创建额外的indic列,然后通过它们进行过滤,但它也没有很好地工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-07 14:09:56

您可以使用来自data.table的函数data.table

代码语言:javascript
复制
example[data.table::between(format(example$date, "%H:%M:%S"), 
                            lower = "10:00:00",
                            upper = "18:35:00"), ]
票数 1
EN

Stack Overflow用户

发布于 2017-11-07 14:37:30

代码语言:javascript
复制
library(tibbletime)
library(tidyverse)
library(lubridate)

example <- as.tibble(data.frame(
  date = ymd_hms(seq(as.POSIXct("2017-01-01 09:00:00"), as.POSIXct("2017-01-02 20:00:00"), by="min")),
  value = rep(1, 2101)))

example %>%
  mutate(time = as.numeric(paste0(hour(date),".",minute(date)))) %>%
  filter(time >= 10 & time <= 18.35) %>%
  select(-time)
票数 0
EN

Stack Overflow用户

发布于 2017-11-07 14:38:28

这很烦人,但如果你真的想留在潮间带里:

代码语言:javascript
复制
rng <- range((hms("10:00:00") %>% as_datetime()), (hms("18:35:00") %>% as_datetime()))

example %>% 
  separate(., date, into = c("date", "time"), sep = " ") %>% 
  mutate(
    time = hms(time) %>% as_datetime(),
    date = as_date(date)
  ) %>% 
  filter(time > rng[1] & time < rng[2]) %>% 
  separate(., time, into = c("useless", "time"), sep = " ") %>% 
  select(-useless)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47159865

复制
相关文章

相似问题

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