R 中按组划分的因子水平百分比
Percentage of factor levels by group in R
我正在尝试计算组内某个因素的不同水平的百分比。
我有嵌套数据,想知道每个国家/地区的学校中私立学校的百分比(具有 2 个级别的因素)。
但是,我不知道该怎么做。
# my data:
CNT <- c("A", "A", "A", "A", "A", "B", "B", "B", "C", "C", "C", "C", "C", "C", "D", "D",
"D", "D", "D", "D")
SCHOOL <- c(1:5, 1:3, 1:6, 1:6)
FACTOR <- as.factor(c(1,2,1,2,1,1,1,2,1,2,2,2,1,1,1,1,1,1,1,1))
mydata <- data.frame(CNT, SCHOOL, FACTOR)
head(mydata)
我想要一个列,其中包含每个国家/地区内某一级别的因素(假设为 1)的百分比。
只需按 CNT
对数据进行分组,然后汇总这些组,以计算您拥有的 FACTOR == 1
实例数与该组内的观察总数 (n()
)。
library(dplyr)
mydata %>%
group_by(CNT) %>%
summarise(
priv_perc = sum(FACTOR == 1, na.rm=T) / n()
)
另一种解决方案(使用 base-R):
prop.table(table(mydata$CNT, mydata$FACTOR), margin = 1)
1 2
A 0.6000000 0.4000000
B 0.6666667 0.3333333
C 0.5000000 0.5000000
D 1.0000000 0.0000000
我正在尝试计算组内某个因素的不同水平的百分比。
我有嵌套数据,想知道每个国家/地区的学校中私立学校的百分比(具有 2 个级别的因素)。
但是,我不知道该怎么做。
# my data:
CNT <- c("A", "A", "A", "A", "A", "B", "B", "B", "C", "C", "C", "C", "C", "C", "D", "D",
"D", "D", "D", "D")
SCHOOL <- c(1:5, 1:3, 1:6, 1:6)
FACTOR <- as.factor(c(1,2,1,2,1,1,1,2,1,2,2,2,1,1,1,1,1,1,1,1))
mydata <- data.frame(CNT, SCHOOL, FACTOR)
head(mydata)
我想要一个列,其中包含每个国家/地区内某一级别的因素(假设为 1)的百分比。
只需按 CNT
对数据进行分组,然后汇总这些组,以计算您拥有的 FACTOR == 1
实例数与该组内的观察总数 (n()
)。
library(dplyr)
mydata %>%
group_by(CNT) %>%
summarise(
priv_perc = sum(FACTOR == 1, na.rm=T) / n()
)
另一种解决方案(使用 base-R):
prop.table(table(mydata$CNT, mydata$FACTOR), margin = 1)
1 2
A 0.6000000 0.4000000
B 0.6666667 0.3333333
C 0.5000000 0.5000000
D 1.0000000 0.0000000