【问题标题】:Calculate average difference in days between dates in same column and standard deviation associated计算同一列中日期之间的平均天数差异和相关的标准偏差
【发布时间】:2019-01-04 14:19:43
【问题描述】:

我开始用 R 编程,但我还没有找到解决这个问题的方法。

我将数据保存在如下所示的数据框中:

        Material created_date
1    50890000   29/10/2018
2    50890000   17/10/2018
3    50890000   31/05/2018
4    50890000   08/02/2018
5    50890000   09/01/2018
6    50900000   21/12/2018
7    50900000   27/09/2018
8    50900000   24/08/2018
9    50900000   18/05/2018
10   51200000   13/07/2018
11   51210001   08/08/2018
12   51210001   26/07/2018
13   51210001   27/02/2018
14   51210001   17/01/2018
15   51210001   09/01/2018
16   51210002   29/08/2018
17   51210002   08/08/2018
18   51210002   13/04/2018

我想计算 4 列:

  • 连续日期之间的平均差异(以天为单位)
  • 相关的标准偏差
  • 工作日中连续日期之间的平均差异
  • 相关的标准偏差

有人告诉我使用plyrdplyr,但刚开始我不确定如何计算所需的输出。

谢谢,

【问题讨论】:

  • 欢迎来到 SO!请分享一些尝试,以帮助您。
  • 查看这个关于计算number of weekdays的问题

标签: r


【解决方案1】:

首先,您需要将 created_date 更改为 R 可以理解的日期。这样做:

df$R_date <- as.Date(df$created_date, "%d/%m/%Y")

现在,如果您只是想计算日期之间的差异,则可以使用循环(被许多人避开):

for (i in 2:nrow(df)) {
  df$date_diff[i] <- as.integer(df$R_date[i]-df$R_date[i-1])
}

但是,看到您对 dplyr 的引用,我想知道您是否想为每个材料组执行此操作...

【讨论】:

    【解决方案2】:

    这里是dplyr 解决前两个要点问题的方法:

    df <- df %>% 
      mutate(
        created_date = as.Date(created_date, "%d/%m/%Y"),
        diff = as.integer(created_date - lag(created_date)))
    df %>% 
      summarise(n = n(), mval = mean(diff, na.rm = T), std = sd(diff, na.rm = T))
    
       n      mval      std
    1 18 -11.70588 128.4916
    

    查看我留给你的关于工作日数的cmets中的链接,并尝试结合这些方法来回答你的后两个问题

    【讨论】:

      猜你喜欢
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 2010-12-09
      相关资源
      最近更新 更多