r - 如何根据开始和结束日期计算季度下降的观察次数?
问题描述
patient_id dt_diag_init enroll
<int64> <date> <date>
1 10401 2018-01-04 2020-09-30
2 60701 2019-05-31 2019-09-30
3 343702 2018-12-05 2020-09-30
4 472202 2019-12-30 2020-09-30
5 489502 2019-09-17 2019-11-30
6 557401 2019-10-15 2020-09-30
7 857901 2018-01-02 2020-09-30
8 874201 2018-01-01 2020-09-30
9 1309102 2019-03-11 2020-09-30
10 1317601 2018-08-14 2020-09-30
我正在尝试根据日期范围(dt_diag_init 和注册)计算每季度的患者数量。患者 ID 10401 从 2018 年 1 月 4 日到 2020 年 9 月 30 日开始,因此由于日期范围重叠,因此患者将在 18 年第 1 季度、18 年第 2 季度......到 20 年第 3 季度计算。我试图得到一个只有季度和每季度患者数量的输出表。
样本输出表
Qtr year total
<chr> <dbl> <dbl>
1 Q1'18 2018 485
2 Q2'18 2018 516
3 Q3'18 2018 560
这是我在进行统计之前尝试使用四分之一列创建表的内容,但出现错误:
df_1 <- df %>%
mutate(quarter = map2(
as.numeric(dt_diag_init),
as.numeric(enroll),
~ format(seq(.x, .y, by="quarter"), "Q%q'%y")
))
样品日期:
df <- structure(list(patient_id = structure(c(5.13877678239481e-320,
2.99902787682095e-319, 1.69811350606928e-318, 2.33298786097528e-318,
2.41846121770582e-318, 2.75392685057557e-318, 4.23859411632851e-318,
4.31912681660064e-318, 6.46782325102068e-318, 6.50981389026072e-318
), class = "integer64"), dt_diag_init = structure(c(17535, 18047,
17870, 18260, 18156, 18184, 17533, 17532, 17966, 17757), class = "Date"),
enroll = structure(c(18535, 18169, 18535, 18535, 18230, 18535,
18535, 18535, 18535, 18535), class = "Date")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
解决方案
也许这有帮助
library(dplyr)
library(zoo)
library(tidyr)
library(purrr)
library(lubridate)
df %>%
mutate(quarter = map2(dt_diag_init, enroll,
~ as.yearqtr(seq(.x, .y, by = 'quarter')))) %>%
unnest(quarter) %>%
mutate(year = year(quarter)) %>%
count(quarter, year, name = 'total')
-输出
# A tibble: 11 × 3
quarter year total
<yearqtr> <dbl> <int>
1 2018 Q1 2018 3
2 2018 Q2 2018 3
3 2018 Q3 2018 4
4 2018 Q4 2018 5
5 2019 Q1 2019 6
6 2019 Q2 2019 7
7 2019 Q3 2019 8
8 2019 Q4 2019 8
9 2020 Q1 2020 8
10 2020 Q2 2020 8
11 2020 Q3 2020 8
推荐阅读
- sql-server - Microsoft SQL Server Management Studio 中 CTE 的语法
- java - 未正确计算通过 Java 代码添加到组的用户的访问权限
- android - 如何在 android webview 中修复 NameNotFoundException
- python - 解决导入模块中的“ValueError:‘str’类型对象的未知格式代码‘f’”
- electron - 如何从 URL 加载电子应用程序
- javascript - 用多列围绕跨多列的特色图像包装帖子内容
- python - Pyspark 或 spark sql 解决方案来剥离字符串列中第三个单词之后的所有内容
- java - 路由器上的 Java 到 SSH 命令
- node.js - 环境变量未加载到 Nodejs 中的 process.env
- jquery - 使用 jquery 将多个 .txt 文件合并为一个 html 表单选择下拉列表