首页 > 解决方案 > 如何根据现有数据在 R 中创建百分比表?

问题描述

我想知道如何根据现有数据框中的数据创建一个新的百分比表。

这是我一直在使用的数据示例:

Sample All 1  2  3  4
1 E1   250 29 27 11 18
2 E2   210 36 24 28 21
3 E3   130 29 10 12 23
4 E4   140 33 24 22 14
5 E5   220 27 16 19 18

这是我的代码示例的 dput:

dd <- data.frame(
  Sample = c("E1", "E2", "E3", "E4", "E5"), 
  `All` = c(250, 210, 130, 140, 220), 
  `1` = c(29, 36, 29, 33, 27), 
  `2` = c(27, 24, 10, 24, 16), 
  `3` = c(11, 28, 12, 22, 19), 
  `4` = c(18, 21, 27, 14, 18),
  check.names=FALSE
)

我正在尝试计算第 3:5 列中所有值与第 2 列中值的百分比。

这就是我想要的输出:

  Sample    All  1    2    3     4 
        1 E1   250 11.6 10.8 4.4   7.2
        2 E2   210 17.1 11.4 13.3  10
        3 E3   130 22.3 7.6  9.2   17.69

我试过使用 prop.table 但这并没有给我想要的输出

标签: r

解决方案


您可以自己构建数据框,只需提取列并自己进行划分。例如

data.frame(dd[,1:2], dd[,-(1:2)]/dd[,2] * 100, check.names=FALSE)
#   Sample All        1         2         3         4
# 1     E1 250 11.60000 10.800000  4.400000  7.200000
# 2     E2 210 17.14286 11.428571 13.333333 10.000000
# 3     E3 130 22.30769  7.692308  9.230769 20.769231
# 4     E4 140 23.57143 17.142857 15.714286 10.000000
# 5     E5 220 12.27273  7.272727  8.636364  8.181818

这里我们取前两列,然后取所有其他列除以第二列乘以 100。


推荐阅读