簡體   English   中英

使用總和和平均值將行條件合並為一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM