如何计算 R 中 table 的百分比

How to calculate percentage in a table in R

我有一个 table,我想计算每个值占每列总和的百分比。我的意思是我想要这些数据:

(30/35)x100, (0/35)x100, 第一列 (5/35)x100, (3/29)x100, (24/29)x100, (2/29)x100第三列为 (5/19)x100、(7/19)x100、(7/19)x100。

df
       Donkey Horse Hybrid
  Donkey     30     3      5
  Horse       0    24      7
  Hybrid      5     2      7

我用了这个函数但是计算不正确

apply(df, 2,function(x,y) (x/y)*100,  colSums(df))

有人可以帮忙吗? 非常感谢

您可以像下面那样尝试propotions

> proportions(as.matrix(df), 2) * 100
         Donkey     Horse   Hybrid
Donkey 85.71429 10.344828 26.31579
Horse   0.00000 82.758621 36.84211
Hybrid 14.28571  6.896552 36.84211

colSums + col 如下所示

> df / colSums(df)[col(df)] * 100
         Donkey     Horse   Hybrid
Donkey 85.71429 10.344828 26.31579
Horse   0.00000 82.758621 36.84211
Hybrid 14.28571  6.896552 36.84211

在 OP 的代码中,语法应该是

apply(df, 2, function(x) x/sum(x) * 100)
        Donkey     Horse   Hybrid
Donkey 85.71429 10.344828 26.31579
Horse   0.00000 82.758621 36.84211
Hybrid 14.28571  6.896552 36.84211

数据

df <- structure(list(Donkey = c(30L, 0L, 5L), Horse = c(3L, 24L, 2L
), Hybrid = c(5L, 7L, 7L)), class = "data.frame", row.names = c("Donkey", 
"Horse", "Hybrid"))

以下任何一项也可以:

prop.table(as.matrix(df), 2)*100
         Donkey     Horse   Hybrid
Donkey 85.71429 10.344828 26.31579
Horse   0.00000 82.758621 36.84211
Hybrid 14.28571  6.896552 36.84211


sweep(df, 2, colSums(df), '/')*100
         Donkey     Horse   Hybrid
Donkey 85.71429 10.344828 26.31579
Horse   0.00000 82.758621 36.84211
Hybrid 14.28571  6.896552 36.84211

t(t(df)/ colSums(df))*100
         Donkey     Horse   Hybrid
Donkey 85.71429 10.344828 26.31579
Horse   0.00000 82.758621 36.84211
Hybrid 14.28571  6.896552 36.84211