如何根据某些条件计算日期?

问题描述

我有两个日期变量,一个是问题的开始日期,另一个是问题的回答日期,如下所示:

   q_open     q_answer
2020-09-01   2020-09-02
2020-09-01   2020-09-09
2020-09-05      NA
2020-09-10   2020-09-17

我需要找出一周内未回答的问题的数量。星期从分钟(q_open)开始。因此,第一周从2020-09-01开始,至2020-09-07结束。 所以所需的输出是:

Week   count_answered
 1         2           # considering NA also
 2         1

谢谢。

解决方法

我们可以计算出从最小值中减去q_open的周数,得到答案日期和q_open日期之间的差(以周为单位),保留大于1周和{{1 }}。

count

数据

假设这些列是日期类。如果未先运行library(dplyr) df %>% mutate(week_num = as.integer(ceiling(pmax(q_open - min(q_open),1)/7))) %>% filter(difftime(q_answer,q_open,units = "weeks") >= 1 | is.na(q_answer)) %>% count(week_num) # week_num n #1 1 2 #2 2 1

df[] <- lapply(df,as.Date)
,

如何?

library(dplyr)
library(lubridate)
library(tibble)

data <- tibble(
  q_open = as.Date(c("2020-09-01","2020-09-01","2020-09-05","2020-09-10")),q_answer = as.Date(c("2020-09-02","2020-09-09",NA,"2020-09-17"))
)

out <- data %>%
  mutate(wk_open = week(q_open),wk_answer = week(q_answer)) %>%
  mutate(on_time = ifelse(wk_answer >= wk_open + 1,TRUE,FALSE )) %>%
  group_by(wk_open) %>%
  summarise(count_answered = sum(on_time,na.rm = TRUE))

具有:

> out
# A tibble: 3 x 2
  wk_open count_answered
    <dbl>          <int>
1      35              2
2      36              0
3      37              1

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...