[英]Conditional Merging of Rows to One Row with Sum and Average
我有一個看起來像這樣的表:
學生卡 | Class | 星期 | 單位 | 年級 | 期間 |
---|---|---|---|---|---|
1 | 一個 | 1 | 2 | 50 | 90 |
1 | 一個 | 1 | 3 | 100 | 120 |
1 | 乙 | 1 | 3 | 70 | 30 |
2 | 乙 | 4 | 1 | 80 | 60 |
2 | 乙 | 4 | 1 | 90 | 60 |
2 | 乙 | 5 | 2 | 100 | 90 |
我想做的是創建一個新的data.frame。 對於具有相同 ID、Class 和 Week 的每一行,將它們全部合並到一行中,這樣我就有了基於 Units 的加權平均成績,以及 Duration 和 Units 的簡單總和。
所以在這種情況下,我希望得到一個看起來像這樣的表:
學生卡 | Class | 星期 | 單位 | 年級 | 期間 |
---|---|---|---|---|---|
1 | 一個 | 1 | 5 | 80 | 210 |
1 | 乙 | 1 | 3 | 70 | 30 |
2 | 乙 | 4 | 2 | 85 | 120 |
2 | 乙 | 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.