如何在 R 中按组创建一个新变量,该变量是列的总和?
How to create a new variable that is the sum of a column, by group, in R?
我正在尝试在我的数据框中创建一个新变量,它是一个变量的组特定总和。例如:
df <- data.frame (group = c(1, 1, 1, 2, 2, 2),
variable = c(1, 2, 1, 3, 4, 5)
)
df
group variable
1 1 1
2 1 2
3 1 1
4 2 3
5 2 4
6 2 5
我想要一个按组对变量求和的新变量,得到如下所示的内容:
group variable sum
1 1 1 4
2 1 2 4
3 1 1 4
4 2 3 12
5 2 4 12
6 2 5 12
谢谢!
基础 R
with(df, ave(variable, group, FUN = sum))
# [1] 4 4 4 12 12 12
(重新分配到 df$sum <- with(df, ...)
的框架中。)
dplyr
library(dplyr)
df %>%
group_by(group) %>%
mutate(sum = sum(variable)) %>%
ungroup()
# # A tibble: 6 x 3
# group variable sum
# <dbl> <dbl> <dbl>
# 1 1 1 4
# 2 1 2 4
# 3 1 1 4
# 4 2 3 12
# 5 2 4 12
# 6 2 5 12
data.table
library(data.table)
DF <- as.data.table(df)
DF[, sum := sum(variable), by = .(group) ]
DF
# group variable sum
# 1: 1 1 4
# 2: 1 2 4
# 3: 1 1 4
# 4: 2 3 12
# 5: 2 4 12
# 6: 2 5 12
我正在尝试在我的数据框中创建一个新变量,它是一个变量的组特定总和。例如:
df <- data.frame (group = c(1, 1, 1, 2, 2, 2),
variable = c(1, 2, 1, 3, 4, 5)
)
df
group variable
1 1 1
2 1 2
3 1 1
4 2 3
5 2 4
6 2 5
我想要一个按组对变量求和的新变量,得到如下所示的内容:
group variable sum
1 1 1 4
2 1 2 4
3 1 1 4
4 2 3 12
5 2 4 12
6 2 5 12
谢谢!
基础 R
with(df, ave(variable, group, FUN = sum))
# [1] 4 4 4 12 12 12
(重新分配到 df$sum <- with(df, ...)
的框架中。)
dplyr
library(dplyr)
df %>%
group_by(group) %>%
mutate(sum = sum(variable)) %>%
ungroup()
# # A tibble: 6 x 3
# group variable sum
# <dbl> <dbl> <dbl>
# 1 1 1 4
# 2 1 2 4
# 3 1 1 4
# 4 2 3 12
# 5 2 4 12
# 6 2 5 12
data.table
library(data.table)
DF <- as.data.table(df)
DF[, sum := sum(variable), by = .(group) ]
DF
# group variable sum
# 1: 1 1 4
# 2: 1 2 4
# 3: 1 1 4
# 4: 2 3 12
# 5: 2 4 12
# 6: 2 5 12