在 R 数据框中,对于给定的行,如何找到 A 列中的值占 B 列中的值的百分比?

In an R data frame, for a given row, how can I find what percentage a value in column A is of a value in column B?

假设我有一个数据框如下:

dataDF <- data.frame(
   cola = c(10, 15, 30),
   colb = c(100, 300, 800)
   )


   cola   colb
1  10     100
2  15     300
3  30     800

如何找到第 1 行 (10) 列占第 1 行 (100) 列的百分比,以此类推第 2 行和第 3 行?

谢谢。

一个选项是prop.table并指定margin。这里是按行,所以我们用1,如果是列,就是2

prop.table(as.matrix(dataDF), 1)

如果您想要一个包含百分比的列,另一种有用的方法是:

library(dplyr)

dataDF <- data.frame(
  cola = c(10, 15, 30),
  colb = c(100, 300, 800)
)
dataDF2 <- mutate(dataDF, colc = cola/colb*100)
dataDF2
  cola colb  colc
1   10  100 10.00
2   15  300  5.00
3   30  800  3.75

另一个解决方案data.table package

library(data.table)
setDT(dataDF)[, colc := cola/colb*100]

> dataDT
   cola colb  colc
1:   10  100 10.00
2:   15  300  5.00
3:   30  800  3.75