Я согласен с Sab по поводу использования data.table
.Я думаю, что в вашем ожидаемом выводе могла быть опечатка, поэтому я включил в свой пример несколько различных опций:
library(data.table)
df <- data.frame(mnth = c("jan", "feb", "feb", "mar", "mar",
"mar", "apr", "apr", "apr", "apr",
"may", "may", "may", "may", "may"),
n = c(1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5),
value = c(5, 1, 3, 2, 8, 0, 6, 0, 2, 7, 2, 1, 4, 2, 6))
setDT(df) # converts data.frame to data.table
df[,.(sum_n = sum(n), # adds up the 'n' column
sum_value = sum(value), # adds up the 'value' column
count_row = .N), by=mnth] # counts the number of rows for each value of 'mnth'
Это дает следующие результаты:
mnth sum_n sum_value count_row
1: jan 1 5 1
2: feb 3 4 2
3: mar 6 10 3
4: apr 10 15 4
5: may 15 15 5
РЕДАКТИРОВАТЬ:
После разъяснения автора, вот рабочий код:
df[,.(sum_value = sum(value)), by = .(n)]
Это дает следующие результаты:
> df[,.(sum_value = sum(value)), by = .(n)]
n sum_value
1: 1 16
2: 2 12
3: 3 6
4: 4 9
5: 5 6