在 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
假设我有一个数据框如下:
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