首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在data.frame的特定行中给定另一个日期的情况下过滤过去的日期?

如何在data.frame的特定行中给定另一个日期的情况下过滤过去的日期?
EN

Stack Overflow用户
提问于 2018-08-23 14:15:34
回答 3查看 583关注 0票数 2

我有一个关于在R中过滤日期的问题。我找到了这个链接dplyr过滤器启用日期筛选器,它回答了如何在特定日期范围内借助dplyr进行过滤的问题。我想选择一个动态范围,例如计算特定窗口中的关键作业数,例如从数据集中当前日期开始的最近七天。我脑海中的代码应该是这样的:

代码语言:javascript
运行
复制
my.data %>% 
group_by(category) %>% 
filter(date > date - days(7) & date <= date) %>% 
mutate(ncrit = sum(critical == 'yes'))

这不能正常工作。有没有办法让dplyr运行?

编辑:

对于不清楚的帖子,我深表歉意。要完成这篇文章,首先要有这样的想法:想象计算机运行作业。如果计算机在过去x天内无法计算作业,则更有可能的情况是,它也无法计算当前作业。虚拟数据集包括计算机类别(例如A/B)、日期和故障(是/否)

使用来自Rui Barradas的数据集,我想用dplyr添加以下列‘过去3天内关键作业的数量’(在本例中x= 3):

代码语言:javascript
运行
复制
head(my.data, 7)
  category       date critical number of critical jobs in past 3 days
1        A 2018-08-14      yes                                     NA
2        A 2018-08-15       no                                     NA
3        A 2018-08-16      yes                                     NA
4        A 2018-08-17       no                                      2
5        A 2018-08-18      yes                                      1
6        A 2018-08-19       no                                      2
7        A 2018-08-20      yes                                      1

数据(Rui Barradas):

代码语言:javascript
运行
复制
set.seed(3635)
my.data <- data.frame(category = rep(c('A', 'B'), each = 10), #
                  date = rep(seq(Sys.Date() - 9, Sys.Date(), by = 'days')),
                  critical = sample(c('no', 'yes'), 20, TRUE))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-23 14:41:08

没有示例数据集就不容易说,但根据您对问题的描述,我相信以下内容是正确的。

代码使用函数rollapplyr来自包zoo,灵感不是来自于被接受的,而是来自于对以下问题的第二个答案此question..。

代码语言:javascript
运行
复制
library(zoo)
library(dplyr)

sumCrit <- function(DF, crit = "yes", window = 3){
    DF %>%
        group_by(category) %>%
        mutate(ncrit = rollapplyr(critical == crit, list(-seq(3)), sum, fill = NA))
}


result <- sumCrit(my.data)

head(result, 7)
## A tibble: 7 x 4
## Groups:   category [1]
#  category date       critical ncrit
#               
#1 A        2018-08-14 yes         NA
#2 A        2018-08-15 no          NA
#3 A        2018-08-16 yes         NA
#4 A        2018-08-17 no           2
#5 A        2018-08-18 yes          1
#6 A        2018-08-19 no           2
#7 A        2018-08-20 yes          1

数据。

这是一个虚构的数据集,用于测试上面的代码。

代码语言:javascript
运行
复制
set.seed(3635)    # Make the results reproducible
my.data <- data.frame(category = rep(c("A", "B"), each = 10),
                      date = rep(seq(Sys.Date() - 9, Sys.Date(), by = "days"), 2),
                      critical = sample(c("no", "yes"), 20, TRUE))
票数 1
EN

Stack Overflow用户

发布于 2018-08-23 14:38:39

数据生成

代码语言:javascript
运行
复制
DATE1 <- as.Date("2018-08-23")
DATE2 <- as.Date("2018-07-23")

# creating a data range with the start and end date:
dates <- seq(DATE2, DATE1, by="days")

dt<-data.frame(category=sample(1:6,32,replace = T),deadline=dates)

过滤日期

代码语言:javascript
运行
复制
library("tidyverse")
dt %>% 
  group_by(category) %>% 
  filter(deadline %in% seq(Sys.Date()-7,Sys.Date() , by="days") )
票数 0
EN

Stack Overflow用户

发布于 2018-08-23 15:03:35

使用Rui Barradas创建的数据集,提供lubridate公式,使用intervals

代码语言:javascript
运行
复制
set.seed(3635)    # Make the results reproducible
my.data <- data.frame(category = rep(c("A", "B"), each = 10),
                      date = rep(seq(Sys.Date() - 9, Sys.Date(), by = "days"), 2),
                      critical = sample(c("no", "yes"), 20, TRUE))


library(lubridate) #use lubridate to create intervals
 INT_check<-interval(Sys.Date()-7,Sys.Date()) # 7 days from today
my.data %>% 
  filter(date %within% INT_check ) %>% 
  group_by(category)%>%
  summarise(ncrit = sum(critical == 'yes'))

您还可以指定INT_检查为

代码语言:javascript
运行
复制
   INT_check<-interval("2018-08-16","2018-08-18") # if you want to use absolute dates
    INT_check<-interval("2018-08-16",Sys.Date()) # if you want to specify just absolute start date
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51979378

复制
相关文章

相似问题

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