Câu trả lời được cung cấp bởi rcs hoạt động và rất đơn giản. Tuy nhiên, nếu bạn đang xử lý các bộ dữ liệu lớn hơn và cần tăng hiệu suất, có một cách khác nhanh hơn:
library(data.table)
data = data.table(Category=c("First","First","First","Second","Third", "Third", "Second"), 
                  Frequency=c(10,15,5,2,14,20,3))
data[, sum(Frequency), by = Category]
#    Category V1
# 1:    First 30
# 2:   Second  5
# 3:    Third 34
system.time(data[, sum(Frequency), by = Category] )
# user    system   elapsed 
# 0.008     0.001     0.009 
Hãy so sánh điều đó với cùng một thứ bằng cách sử dụng data.frame và ở trên:
data = data.frame(Category=c("First","First","First","Second","Third", "Third", "Second"),
                  Frequency=c(10,15,5,2,14,20,3))
system.time(aggregate(data$Frequency, by=list(Category=data$Category), FUN=sum))
# user    system   elapsed 
# 0.008     0.000     0.015 
Và nếu bạn muốn giữ cột thì đây là cú pháp:
data[,list(Frequency=sum(Frequency)),by=Category]
#    Category Frequency
# 1:    First        30
# 2:   Second         5
# 3:    Third        34
Sự khác biệt sẽ trở nên đáng chú ý hơn với các bộ dữ liệu lớn hơn, vì đoạn mã dưới đây thể hiện:
data = data.table(Category=rep(c("First", "Second", "Third"), 100000),
                  Frequency=rnorm(100000))
system.time( data[,sum(Frequency),by=Category] )
# user    system   elapsed 
# 0.055     0.004     0.059 
data = data.frame(Category=rep(c("First", "Second", "Third"), 100000), 
                  Frequency=rnorm(100000))
system.time( aggregate(data$Frequency, by=list(Category=data$Category), FUN=sum) )
# user    system   elapsed 
# 0.287     0.010     0.296 
Đối với nhiều tập hợp, bạn có thể kết hợp lapplyvà .SDnhư sau
data[, lapply(.SD, sum), by = Category]
#    Category Frequency
# 1:    First        30
# 2:   Second         5
# 3:    Third        34
               
              
rowsum.