我有一个如下所示的表:
学生ID | 班级 | 周单元 | >年级持续时间[/tr>||||
---|---|---|---|---|---|---|
1 | A | 1 | 2 | 50 | 90||
1 | A | 1 | 3 | 100 | 120 | |
1 | B | 1 | 3 | 70 | 30 | |
2 | B | 4 | 1 | 80 | 60 | |
2 | B | 4 | 1 | 90 | 60 | |
2 | B | 5 | 2 | 100 | 90
我希望这就是您想要的:
library(dplyr)
df %>%
group_by(Student_ID, Class, Week) %>%
summarise(Grade = weighted.mean(Grade, Units),
Duration = sum(Duration),
Units = sum(Units)) %>%
relocate(Units, .after = Week)
# A tibble: 4 x 6
# Groups: Student_ID, Class [3]
Student_ID Class Week Units Grade Duration
<int> <chr> <int> <int> <dbl> <int>
1 1 A 1 5 80 210
2 1 B 1 3 70 30
3 2 B 4 2 85 120
4 2 B 5 2 100 90