【问题标题】:How to collect observation from one vector, conditioned to the value of another one如何从一个向量收集观察值,以另一个向量的值为条件
【发布时间】:2016-08-18 18:59:05
【问题描述】:

我有以下问题:我正在考虑一个包含 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 对整个投资组合的观察次数相同。有没有办法解决这个问题?

【问题讨论】:

  • Portfolio_1_EW_tot_ret[Mkt_Ret &gt;= 0]?

标签: r loops if-statement vector


【解决方案1】:

正如@Roland 所说,最简单的方法是Portfolio_1_EW_tot_ret[Mkt_Ret &gt;= 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
  } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多