Hi

I have a large credit portfolio (exceeding 50000 borrowers). For particular 
process I need to add up the exposures based on the bands. I am giving a small 
test data below.

rating <- c("A", "AAA", "A", "BBB","AA","A","BB", "BBB", "AA", "AA", "AA", "A", 
"A", "AA","BB","BBB","AA", "A", "AAA","BBB","BBB", "BB", "A", "BB", "A", "AA", 
"B","A", "AA", "BBB", "A", "BBB")

ead <- c(169229.93,100, 5877794.25, 9530148.63, 75040962.06, 21000, 1028360,  
6000000, 17715000,  14430325.24, 1180946.57, 150000, 167490, 81255.16, 54812.5, 
3000, 1275702.94, 9100, 1763142.3, 3283048.61, 1200000, 11800, 3000,  
96894.02,  453671.72,  7590, 106065.24, 940711.67,  2443000, 9500000, 39000, 
1501939.67)

## First I have sorted the data rating-wise as

df <- data.frame(rating, ead)

df_sorted <-
 df[order(df$rating),]

df_sorted_AAA <- subset(df_sorted, rating=="AAA")      
df_sorted_AA <- subset(df_sorted, rating=="AA")
df_sorted_A <- subset(df_sorted, rating=="A")
df_sorted_BBB <- subset(df_sorted, rating=="BBB")
df_sorted_BB <- subset(df_sorted, rating=="BB")
df_sorted_B <- subset(df_sorted, rating=="B")
df_sorted_CCC <- subset(df_sorted, rating=="CCC")

## we begin with BBB rating. The R output for df_sorted_BBB is as follows

> df_sorted_BBB
      rating      ead
4     BBB      9530149
8     BBB      6000000
16    BBB     3000
20    BBB     3283049
21    BBB     1200000
30    BBB     9500000
32    BBB     1501940

My problem is I need to totals of eads falling in the respective bands

I
 am defining bands in millions as 

seq_BBB <- seq(1000000, max(df_sorted_BBB$ead), by = 1000000)

# The output is 
[1] 1e+06 2e+06 3e+06 4e+06 5e+06 6e+06 7e+06 8e+06 9e+06

So for the sub data pertaining to Rating "BBB", I want corresponding ead totals 
i.e. I want ead totals where ead < 1e+06, then I want ead totals where 1+e06 < 
ead < 2e+06, 2e+06 < ead < 3e+06 ...and so on.

I have tried the following code

s_BBB <- NULL

for (i in 1:length(s_BBB))
{
s_BBB[i] = sum(subset(df_sorted_BBB$ead, df_sorted_BBB$ead < s_BBB[i]))
}

I was trying to find totals of eads < 1e+06, ead < 2e+06, ead<3e+06 and so on.

but the result is 

> s_BBB
[1] 0


I apologize if I am not able to express my problem properly. My only objective 
is first to sort the whole portfolio rating-wise and then within each of these 
rating-wise sorted data, I wish to find out total of eads based
 on various bands starting <1000000,  1000000 - 200000, 2000000 - 3000000, 
3000000 - 4000000 and so on. Since the database contains more than 50000 
records, various ead amounts ranging from few 000's to billion are available.

Please guide

Thanking  you all in advance

Vincy












        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to