簡體   English   中英

R:根據另一個矩陣中的值計算整個矩陣中的百分比值

[英]R:Calculating percentage values across a matrix based on the values in another matrix

我有兩個矩陣,一個是10x1的雙矩陣,可以擴展為任何用戶預設的數字,例如。 100

查看(min_matrx)

    V1
1   27
2   46
3   30
4   59
5   46
6   45
7   34
8   31
9   52
10  46

另一個矩陣如下所示,還有更多行未顯示:

查看(main_matrx)

row.names     sum_value
s17           45
s7469         213
s20984        24
s17309        214
s7432369      43
s221320984    12
s17556        34
s741269       11
s20132984     35

對於main_matrx中的每個行名稱,我要計算min_matrx中出現的值大於main_matrx中的sum_value的次數。 然后,我想將其除以min_matrx中的行數,然后將該值添加為main_matrx中的新列。

例如,在s17的main_matrx的第1行中,一個值出現的次數大於min_matrx = 5次的45次。

現在,將5除以10行min_matrx => 5/10 = 0.5將是我想要作為s17在main_matrx中的新列的值。 然后對行名稱中的所有s_id使用相同的公式。

到目前為止,我已經擺弄:

for(s in 1:length(main_matrx)) {
  new<-sum(main_matrx[s,]>min_CPRS_set)/length(min_matrx)
  }

而且我嘗試使用apply(),但仍然沒有得到結果。

apply(main_matrx,1:length(main_matrx), function(x) sum(main_matrx>min_CPRS_set)/length(min_matrx)))

現在,我被卡住了,因為它無法正常工作。 我對R還是很陌生,所以我的代碼並不是特別有效。 有什么建議么?

有很多方法可以解決這個問題。 這是我想到的一個(我想我理解您的追求;再次理解一個示例比單獨使用單詞要容易得多。將來,我會建議一個示例來解決文本問題。)

其中x是元素,y是向量

FUN <- function(x, y = min_matrix[, 1]) { 
    sum(y > x)/length(y)
}
main_matrx$new <- sapply(main_matrx[, 2], FUN)

## > main_matrx
##    row.names sum_value new
## 1        s17        45 0.5
## 2      s7469       213 0.0
## 3     s20984        24 1.0
## 4     s17309       214 0.0
## 5   s7432369        43 0.6
## 6 s221320984        12 1.0
## 7     s17556        34 0.6
## 8    s741269        11 1.0
## 9  s20132984        35 0.6

暫無
暫無

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

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