【发布时间】:2022-07-27 00:45:33
【问题描述】:
我在 R 中有以下格式的数据,我需要创建一个涉及回顾前一周的列
| Person | Duration | Date | Type |
|---|---|---|---|
| C | 10 | 29/1/22 | T |
| B | 14 | 1/2/22 | T |
| B | 12 | 1/2/22 | T |
| C | 34 | 1/2/22 | T |
| B | 45 | 8/2/22 | M |
| C | 11 | 8/2/22 | M |
我正在寻找一种避免循环的方法,因为我发现它们在 R 中需要很长时间
基本上我想遍历整个数据表,如果类型是 M,请回顾 M 日期之前的前一周。然后,如果有任何涉及该人的内容添加持续时间。在此示例中,它将创建以下列
| Person | Duration | Date | Type | Total Dur |
|---|---|---|---|---|
| C | 10 | 29/1/22 | T | N/A |
| B | 14 | 1/2/22 | T | N/A |
| B | 12 | 1/2/22 | T | N/A |
| C | 34 | 1/2/22 | T | N/A |
| B | 45 | 8/2/22 | M | 26 (adding rows 2 and 3 together) |
| C | 11 | 8/2/22 | M | 34 (only row 4 as row 1 is not week before) |
我在这里的第一篇文章希望一切都有意义
【问题讨论】:
-
我会做类似
library(dplyr); library(slider); df %>% group_by(Person) %>% mutate(Total_Dur = slide_index_dbl(Duration, Date, sum, .before = 7)的事情。如果您将日期转换为日期格式(在 R 中为 iso8601 并显示为 2022-01-29),则对日期进行数学运算会更容易。