簡體   English   中英

根據其他矩陣選擇行並計算每個選定行的平均值

[英]Selecting rows on the basis of other matrix and calculate mean of every selected row

我想根據一些股票排名計算每個時期的平均股票回報。 為此,我有兩個矩陣。 第一個矩陣將用於計算股票的排名。 根據股票的排名。 我將從矩陣 2 中選擇股票。 股票數量將因行而異。 例如,第一行可能是 32,第二行可能是 33。第二個矩陣代表股票的回報。 之后我們將選擇那 32 只股票並計算平均回報。 下一行類似。 我試圖制作一個可重復的例子。 如果您需要任何清晰度,請查看它,請發表評論。

matrix1<-as.matrix(data.frame(a=c(13,21,7,6),b=c(10,13,2,9),c=c(14,20,19,18)))
rank<-apply(-matrix1,1,rank)                
RankRB <- function(x){

   r <- as.matrix(t(apply(-x, 1, rank, na.last = "keep")))
  return(r)
}
Rank<-RankRB(matrix1)
matrix2<-as.matrix(data.frame(a=c(0.5,0.4,0.2,0.1),b=c(0.3,0.2,0.2,0.1),c=c(0.25,0.20,0.30,0.40)))
top_n<-c(2,1,1,2)
Required_output<-c(0.375,0.40,0.30,0.25)

你可以做

rank <- t(rank)
sapply(seq_along(top_n), function(x) 
                  mean(matrix2[x, ][which(rank[x, ] %in% 1:top_n[x])]))
#[1] 0.375 0.400 0.300 0.250

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM