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

  • 本文关键字:之间 标准差 日期 一列 计算 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但是当我开始时,我不确定如何计算所需的输出。

谢谢

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

以下是解决前两个要点问题的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

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

最新更新