在標題中使用“表格”的其他問題實際上是在使用資料框。
我想嚴格遵守tableobject。
假設我有結構相同的表,我想找到它的平均值。
例如:
test1 <- head(table(iris$Sepal.Length, iris$Species))
(test1 test1 test1) / 3
> (test1 test1 test1) / 3
setosa versicolor virginica
4.3 1 0 0
4.4 3 0 0
4.5 1 0 0
4.6 4 0 0
4.7 2 0 0
4.8 5 0 0
但是,它不能通過以下方式完成:
> mean(c(test1,test1,test1))
[1] 0.8888889
> sum(c(test1,test1,test1)) / 3
[1] 16
我能找到的最佳方法是將物件制作成表格串列并使用Reduce函式:
Reduce(` `, list(test1, test1, test1)) / 3
list有沒有更簡單的方法可以在不使用物件來回移動的情況下做到這一點?
uj5u.com熱心網友回復:
array我們可以在第一個二維中回圈并得到mean
apply(replicate(3, test1), 1:2, mean, na.rm = TRUE)
-輸出
setosa versicolor virginica
4.3 1 0 0
4.4 3 0 0
4.5 1 0 0
4.6 4 0 0
4.7 2 0 0
4.8 5 0 0
或者回圈一個維度并得到rowMeans/colMeans
apply(replicate(3, test1), 2, rowMeans, na.rm = TRUE)
setosa versicolor virginica
4.3 1 0 0
4.4 3 0 0
4.5 1 0 0
4.6 4 0 0
4.7 2 0 0
4.8 5 0 0
這兩種方法都比使用Reduce方法更好, 特別是當存在缺失值時,因為na.rm在兩者中都找到了引數mean并且rowMeans/colMeans
注意:replicate用于array通過復制物件“test1”n次來創建一個。
如果物件已經是lists的一個,則在應用之前table轉換為arraywithsimplify2arrayapply
apply(simplify2array(list(test1, test1, test1)), 1:2, mean, na.rm = TRUE)
setosa versicolor virginica
4.3 1 0 0
4.4 3 0 0
4.5 1 0 0
4.6 4 0 0
4.7 2 0 0
4.8 5 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488563.html
