我有一个数据集,它描述了每个患者在医院停留的天数:

my_df<-data.frame(RecordID=c("1","2","3","4","5","6","7","8","9","10"),
              StartDate=c("2020-03-02","2020-03-05"
                          ,"2020-03-08","2020-03-11"
                          ,"2020-03-14","2020-03-17"
                          ,"2020-03-20","2020-03-23"
                          ,"2020-03-26","2020-03-29"),
              BedDays=c(12,3,2,11,1,10,18,10,3,6))

并想统计一下每天使用的床位数量.我希望我的结果是:

Expected results

到目前为止,我只能想到数组和循环的使用.使用数组列出每个住院患者的日期,然后使用循环遍历数组来统计某一天在医院的患者人数.这将是某一天使用的床位数.这听起来很复杂.

有没有什么聪明的函数/包可以轻松地完成这种转换?

推荐答案

以下是uncountcount的组合:

library(dplyr)
library(tidyr)

my_df %>% 
  uncount(BedDays) %>% 
  mutate(StartDate = StartDate + (row_number() - 1), .by = RecordID) %>% 
  count(StartDate)

输出:


    StartDate n
1  2020-03-02 1
2  2020-03-03 1
3  2020-03-04 1
4  2020-03-05 2
5  2020-03-06 2
6  2020-03-07 2
7  2020-03-08 2
8  2020-03-09 2
9  2020-03-10 1
10 2020-03-11 2
11 2020-03-12 2
12 2020-03-13 2
13 2020-03-14 2
14 2020-03-15 1
15 2020-03-16 1
16 2020-03-17 2
17 2020-03-18 2
18 2020-03-19 2
19 2020-03-20 3
20 2020-03-21 3
21 2020-03-22 2
22 2020-03-23 3
23 2020-03-24 3
24 2020-03-25 3
25 2020-03-26 4
26 2020-03-27 3
27 2020-03-28 3
28 2020-03-29 3
29 2020-03-30 3
30 2020-03-31 3
31 2020-04-01 3
32 2020-04-02 2
33 2020-04-03 2
34 2020-04-04 1
35 2020-04-05 1
36 2020-04-06 1

R相关问答推荐

根据固定值范围在tible中添加新行

根据列表中项目的名称多次合并数据框和列表

按R中的组查找相邻列的行累积和的最大值

将年度数据插入月度数据

提取具有连续零值的行,如果它们前面有R中的有效值

为了网络分析目的,将数据框转换为长格式列联表

try 将 colored颜色 编码添加到ggploly的标题中

方法::slotName如何处理非类、非字符的参数?

识别连接的子网(R-igraph)

在gggraph中显示来自不同数据帧的单个值

我将工作代码重构为一个函数--现在我想不出如何传递轴列参数

层次树图的数据树

如何构建一个for循环来循环处理动物ID?

在ggploy中创建GeV分布时出错

如何在条形图中的x和填充变量中包含多个响应变量?

在REST API中使用参数R

从矩阵创建系数图

为什么R列名称忽略具有指定名称的向量,而只关注索引?

使用点图调整离散轴比例

如何在基数R中根据矩阵散点图中的因子给数据上色?