我想知道是否有辦法避免在回圈中使用嵌套的 ifs 來解決這個問題:
- 我有一個帶有值的 100 x 14 矩陣。第 1 列是每行所屬的組(共有 11 個組)。我們稱它為 MatrixA。
- 矩陣 B,具有 11 個不同組(大小為 11x14,其中第一列具有組號)中每一列的平均值。
- 我的兩個矩陣的列順序相同
如果單元格上的值大于矩陣 B 的平均值,我想將 MatrixA 的值更改為 1,否則,輸入 0。如果 MatrixA 中的單元格 [1,2] 屬于第 5 組,則檢查在 MatrixB 中將第 5 列第 2 組分組并放入 1 或 0,依此類推。
MatrixA = cbind(sample(1:11,100,replace = T),matrix(data = rnorm(100*13),nrow = 100,ncol = 13 ))
假設這些是 MatrixA 中每一列的平均值
MatrixB = cbind(1:11,matrix(data = rnorm(11*13),nrow = 11,ncol = 13 ))
我希望正確地表達我的問題。謝謝你。
uj5u.com熱心網友回復:
嘗試
(MatrixA>MatrixB[match(MatrixA[,1],MatrixB[,1]),])*1L
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 1 1 1
[2,] 0 1 1 0 1
[3,] 0 1 1 1 1
[4,] 0 1 1 0 1
[5,] 0 1 1 1 0
...
注意:第一列(組)將全為 0,您可以再次將其替換回來以獲取組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482613.html
上一篇:更改Pandas資料框中的值
下一篇:如何從矩陣中提取附近的位置?
