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