Вычисление сумм групп по обеим переменным: Первая и Вторая.
df$C <- with(df, ave(Second, First, Second, FUN = sum))
df
# First Second C
# 1 A 5 10
# 2 A 10 10
# 3 B 5 10
# 4 B 10 20
# 5 B 10 20
# 6 B 5 10
# 7 A 5 10
dplyr
форма
library(dplyr)
df %>%
group_by(First, Second) %>%
mutate(C = sum(Second))
Или
df %>%
group_by(First, Second) %>%
add_tally(Second, name = "C")
Данные
df <- data.frame(First = c("A", "A", "B", "B", "B", "B", "A"),
Second = c(5, 10, 5, 10, 10, 5, 5))
Редактировать (Дополнительный вопрос из комментария)
Сумма всех секунд, если «Первый» равен текущему первому значению, а «Второй» БОЛЬШЕ текущего значения второго:
library(dplyr)
library(purrr)
df %>%
group_by(First) %>%
mutate(D = map_dbl(Second, ~ sum(Second[Second > .])))
# First Second D
# <fct> <dbl> <dbl>
# 1 A 5 10
# 2 A 10 0
# 3 B 5 20
# 4 B 10 0
# 5 B 10 0
# 6 B 5 20
# 7 A 5 10