首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算R中表中的百分比

如何计算R中表中的百分比
EN

Stack Overflow用户
提问于 2021-07-13 20:00:00
回答 3查看 782关注 0票数 0

我有一个表,我想计算每个值在每一列之和上的百分比。我的意思是我想要这些数据

(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为第三列。

代码语言:javascript
复制
df
       Donkey Horse Hybrid
  Donkey     30     3      5
  Horse       0    24      7
  Hybrid      5     2      7

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

代码语言:javascript
复制
apply(df, 2,function(x,y) (x/y)*100,  colSums(df))

有人能帮忙吗?事先非常感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-13 20:02:42

您可以尝试如下所示的propotions

代码语言:javascript
复制
> 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,如下所示

代码语言:javascript
复制
> 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
票数 3
EN

Stack Overflow用户

发布于 2021-07-13 20:04:02

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

代码语言:javascript
复制
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

数据

代码语言:javascript
复制
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"))
票数 3
EN

Stack Overflow用户

发布于 2021-07-13 20:06:11

下列任何一项也可发挥作用:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68368680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档