如何解决如何根据某些条件计算日期?
我有两个日期变量,一个是问题的开始日期,另一个是问题的回答日期,如下所示:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。