2016-04-25 10 views
0

Ich habe das folgende Problem: Ich erwäge eine Datenbank von 10 verschiedenen Vektoren, die die Rückkehr der gleichen Anzahl von Portfolios enthalten. Ich möchte das Sample in zwei Teilmengen unterteilen, wobei eine die Renditen enthält, wenn sich der Markt positiv entwickelt, und die andere die Renditen enthält, wenn der Markt schlecht abschneidet. Aus diesem Grund habe ich einen anderen Vektor, der die Rückkehr des Marktes enthält.Wie man Beobachtung von einem Vektor sammelt, konditioniert auf den Wert eines anderen Vektors

Was ich bisher getan hat, ist dies:

a) ich die Anzahl der Tage berechnet haben, in denen der Markt positive oder negative Renditen hatte:

n_bull <- sum(Mkt_Ret >= 0) 
n_bear <- sum(Mkt_Ret < 0) 

b) ich geschaffen habe eine Reihe von Vektor, der das Ergebnis für jedes Portfolio enthalten, das heißt:

Portfolio_1_Bull <- rep(0, n_bull) 
Portfolio_1_Bear <- rep(0, n_bear) 

c) I eine Schleife ausführen, um die letztere mit einer Schleife zu füllen:

for(i in 1:length(Portfolio_1_EW_tot_ret)){ 
    if(Mkt_Ret[i] >= 0){ 
    Portfolio_1_Bull[i] = Portfolio_1_EW_tot_ret[i] 
    } 
} 
} 

Das Problem ist, dass der resultierende Vektor Portfolio_1_Bull die gleiche Anzahl von Beobachtungen des gesamten Portfolios haben wird. Gibt es eine Möglichkeit, dieses Problem zu lösen?

+2

'Portfolio_1_EW_tot_ret [Mkt_Ret> = 0]'? – Roland

Antwort

1

Wie @Roland sagte der einfachste Weg ist Portfolio_1_EW_tot_ret[Mkt_Ret >= 0]. Aber wenn Sie Ihre Schleife arbeiten möchten, verwenden Sie einen anderen Zähler Index Ihr Portfolio:

j=1 
for(i in 1:length(Portfolio_1_EW_tot_ret)){ 
    if(Mkt_Ret[i] >= 0){ 
    Portfolio_1_Bull[j] = Portfolio_1_EW_tot_ret[i] 
    j = j+1 
    } 
} 
Verwandte Themen