我正在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
,但是在开始时,我不确定如何计算所需的输出。
谢谢
答案 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
查看我给您留下的有关工作日数的评论中的链接,并尝试结合使用这些方法来回答您的后两个项目符号