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