我有以下问题:我正在考虑一个包含10个不同向量的数据库,其中包含相同数量的投资组合的回报。我想将样本分成两个子集,一个包含市场表现积极时的回报,另一个包含市场表现不佳时的回报。出于这个原因,我有另一个包含市场回报的向量。
到目前为止我做的是:
a)我已计算出市场有正或负回报的天数:
n_bull <- sum(Mkt_Ret >= 0 )
n_bear <- sum(Mkt_Ret < 0 )
b)我创建了一系列向量,其中包含每个投资组合的结果,即:
Portfolio_1_Bull <- rep(0, n_bull)
Portfolio_1_Bear <- rep(0, n_bear)
c)我运行一个循环,用循环填充后者:
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]
}
}
}
问题是得到的矢量Portfolio_1_Bull将具有与整个投资组合相同的观察次数。有没有办法解决这个问题?
答案 0 :(得分:1)
正如@Roland所说,最简单的方法是Portfolio_1_EW_tot_ret[Mkt_Ret >= 0]
。但是,如果您希望循环工作,请使用另一个计数器来索引您的投资组合:
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
}
}