计算同一列中日期之间的平均天数差和相关的标准差

时间:2019-01-04 14:19:43

标签: r

我正在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,但是在开始时,我不确定如何计算所需的输出。

谢谢

2 个答案:

答案 0 :(得分:0)

首先,您需要将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的引用时,我想知道是否要对每个Material组执行此操作...

答案 1 :(得分:0)

以下是您的子弹头问题中前两个问题的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

查看我给您留下的有关工作日数的评论中的链接,并尝试结合使用这些方法来回答您的后两个项目符号