【问题标题】:how to calculate nr of appointments between specific time periods in R如何计算R中特定时间段之间的约会nr
【发布时间】:2020-09-29 17:42:43
【问题描述】:

我想创建一个数据框,在其中汇总从 2015 年 11 月 29 日到 2020 年 5 月 9 日每周(从周日开始到周六结束的周数)的约会次数。

首先,我按照下面计算了每天的约会次数,但现在我正在努力跳到下一个练习 - 每周做一次。你知道一个快速的方法吗?

appointments_day <- df %>%
       group_by(region, id, name, date) %>%
       summarise(appointments = n())
  expand.grid(date = seq(min(df$date), max(df$date), by = '1 day')) %>%
       left_join(., appointments_day)

我的数据集是:

region   id      name        date       appointments
   A      1    clinic1    29-11-2015         2
   A      1    clinic1    26-05-2020         1
   A      1    clinic1    28-05-2020         4
   A      1    clinic1    01-06-2020         2
   A      1    clinic1    03-06-2020         2
   A      2    clinic2    25-05-2020         3
   A      2    clinic2    26-05-2020         1
   A      2    clinic2    27-05-2020         4
   B      3    clinic3    06-07-2020         3
   B      3    clinic3    08-07-2020         2
   B      3    clinic3    09-07-2020         1

我想创建以下数据集:

    region   id      name        first day of the week (as Sunday)     appointments
       A      1    clinic1            29-11-2015                            2
....
       A      1    clinic1            24-05-2020                            5
       A      1    clinic1            31-05-2020                            4    
....
       A      2    clinic2            29-11-2015                            0
....
       A      2    clinic2            24-05-2020                            8
....
       B      3    clinic3            29-11-2015                            0
....
       B      3    clinic3            05-07-2020                            6

【问题讨论】:

    标签: r dataframe date time


    【解决方案1】:

    根据您的数据集,我将执行以下操作:

    library(data.table)
    library(lubridate)
    
    df <- setDT(your_dataset)
    
    df$date <- dmy(df$date)
    df$week_year <- paste0(week(df$date), '-', year(df$date))
    
    result <- df[, .(appointments = .N), by = .(region, id, name, week_year)]
    

    (您不必先汇总每一天的日期。您可以将我的代码用于原始数据集)

    【讨论】:

    • 非常感谢,但是如果我在原始数据集中运行您的代码,我会得到 date = NA 和 week_year NA-NA,该数据集中的列比我在问题中提出的示例要多。另外,我不知道您在代码中的何处指定我的周数从周日至周六以及从 2015 年 11 月 29 日到 2020 年 5 月 9 日?
    • 你导入了 lubridate 库吗?
    • 是的。我在“df”和“结果”中得到 date = NA 和 week_year NA-NA,我得到 week_year=NA-NA 并且约会似乎是每个诊所的总数,这不是我需要的。有什么想法吗?
    • 嗯,也许您的日期列已经格式化为日期。尝试将 dmy() 排除在外。显然,如果日期列中没有信息,则无法正确分隔组,因此您会看到每个诊所的总预约。
    • 非常感谢,它似乎正在工作。当您执行“week(df$Date)”时-此功能周从星期日开始?你知道吗?我需要确定这一点。还有最后一件事,这个功能周从诊所的初始日期开始计算,但我必须将 29-11-2015 的缺失周数设为 0,你知道该怎么做吗?
    猜你喜欢
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多