我开始用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 列:
- 连续日期之间的平均差(以天为单位)
- 相关标准差
- 工作日内连续日期之间的平均差
- 相关标准差
我被告知使用plyr
或dplyr
但是当我开始时,我不确定如何计算所需的输出。
谢谢
首先,您需要将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
查看我留给您的关于工作日数的评论中的链接,并尝试将这些方法结合起来回答您的后两个项目符号