R中新列的按行总计

Rowwise totals on new column in R

我想创建一个新列,它是不同变量子组的按行总和。例如,如果我的数据集如下所示:

df <- tribble(
  ~name, ~point, ~time,
  "A", 1, 1,
  "B", 1, 1,
  "W", 2, 1,
  "A", 3, 2,
  "B", 1, 2,
  "W", 4, 2,
)

# A tibble: 6 x 3
  name  point  time
  <chr> <dbl> <dbl>
1 A         1     1
2 B         1     1
3 W         2     1
4 A         3     2
5 B         1     2
6 W         4     2

我希望它在之后看起来像这样(按时间总计):

df <- tribble(
  ~name, ~point, ~time, ~total,
  "A", 1, 1, 4,
  "B", 1, 1, 4,
  "W", 2, 1, 4,
  "A", 3, 2, 8,
  "B", 1, 2, 8,
  "W", 4, 2, 8,
)

# A tibble: 6 x 4
  name  point  time total
  <chr> <dbl> <dbl> <dbl>
1 A         1     1     4
2 B         1     1     4
3 W         2     1     4
4 A         3     2     8
5 B         1     2     8
6 W         4     2     8

我想使用 dplyr,但我不知道如何正确地对这些项目进行分组,然后将它们放回一个列中。我通过使用 aggregate() 获得了矢量化结果,但我不知道如何将其映射回主数据框。 :(

谢谢!

使用mutate按组求和并保留所有行。

df %>% 
  group_by(time) %>% 
  mutate(total = sum(point))

# A tibble: 6 x 4
# Groups:   time [2]
  name  point  time total
  <chr> <dbl> <dbl> <dbl>
1 A         1     1     4
2 B         1     1     4
3 W         2     1     4
4 A         3     2     8
5 B         1     2     8
6 W         4     2     8