我在管理 NA 以使用多個矩陣計算中位數時遇到問題。
這是我正在處理的代碼和資料的示例:
#Data example
m1 = matrix(c(2, 4, 3, 1),nrow=2, ncol=2, byrow = TRUE)
m2 = matrix(c(NA, 5, 7, 9),nrow=2, ncol=2, byrow = TRUE)
m3 = matrix(c(NA, 8, 10, 14),nrow=2, ncol=2, byrow = TRUE)
Median calculation
apply(abind::abind(m1, m2, m3, along = 3), 1:2, median)
[,1] [,2]
[1,] NA 5
[2,] 7 9
正如預期的那樣,該函式不會為包含 NA 的單元格回傳值。
問題是,如果我用 0 替換 NA,我將得到如下輸出:
#資料示例
m1 = matrix(c(2, 4, 3, 1),nrow=2, ncol=2, byrow = TRUE)
m2 = matrix(c(0, 5, 7, 9),nrow=2, ncol=2, byrow = TRUE)
m3 = matrix(c(0, 8, 10, 14),nrow=2, ncol=2, byrow = TRUE)
Median calculation
apply(abind::abind(m1, m2, m3, along = 3), 1:2, median)
[,1] [,2]
[1,] 0 5
[2,] 7 9
相反,我試圖獲得一個輸出,其中報告 NA 的單元格被跳過,以便只考慮值。在示例中,如果我有單元格,NA, NA, 2我希望得到2結果,而(在示例之外)對于單元格,NA,2,5我希望得到3.5結果。
[,1] [,2]
[1,] 2 5
[2,] 7 9
你知道我怎么能得到這個結果嗎?任何建議將不勝感激,謝謝。
uj5u.com熱心網友回復:
也許你應該先放棄 de NA?嘗試添加 na.rm = TRUE
uj5u.com熱心網友回復:
只需在na.rm=TRUE里面傳遞引數apply
apply(abind::abind(m1, m2, m3, along = 3), 1:2, median, na.rm = TRUE)
輸出:
[,1] [,2]
[1,] 2 5
[2,] 7 9
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515272.html
標籤:r中位数
上一篇:如何ggsave旋轉圖
下一篇:借助R中的幾列洗掉錯誤添加的行
