Problem
We want to group the following data frame by Branch, using different functions to summarize the results.
Branch Loan_Amount TAT
1 A 100 2.0
2 A 120 4.0
3 A 300 9.0
4 B 150 1.5
5 B 200 2.0
This is the expected outcome. We want to group by Branch, count the Number_of_loans, and sum Loan_Amount and TAT.
Branch Number_of_loans Loan_Amount TAT
1 A 3 520 15.0
2 B 2 350 3.5
Data
df <- structure(list(Branch = structure(c(1L, 1L, 1L, 2L, 2L), .Label = c("A",
"B"), class = "factor"), Loan_Amount = c(100L, 120L, 300L, 150L,
200L), TAT = c(2, 4, 9, 1.5, 2)), .Names = c("Branch", "Loan_Amount",
"TAT"), class = "data.frame", row.names = c(NA, -5L))
Options
df1 <- aggregate(.~ Branch, df, FUN = "sum")
df2 <- setNames(aggregate(Loan_Amount~Branch, df, length)[2], c("Number_of_loans"))
cbind(df1, df2)
Branch Loan_Amount TAT Number_of_loans
1 A 520 15.0 3
2 B 350 3.5 2
library(dplyr)
df %>%
group_by(Branch) %>%
summarise(Number_of_loans = n(),
Loan_Amount = sum(Loan_Amount),
TAT = sum(TAT))
Source: local data frame [2 x 4]
Branch Number_of_loans Loan_Amount TAT
(fctr) (int) (int) (dbl)
1 A 3 520 15.0
2 B 2 350 3.5
library(sqldf)
sqldf("SELECT Branch,
COUNT(Loan_Amount) Number_of_loans,
SUM(Loan_Amount) Loan_Amount,
SUM(TAT) TAT
FROM df
GROUP BY Branch")
Branch Number_of_loans Loan_Amount TAT
1 A 3 520 15.0
2 B 2 350 3.5
References
No hay comentarios:
Publicar un comentario