按组划分的因子水平百分比(R)

按组划分的因子水平百分比(R),r,dplyr,aggregate,data-wrangling,R,Dplyr,Aggregate,Data Wrangling,我试图计算一组中某个因素的不同水平的百分比 我有嵌套数据,希望看到每个国家的学校百分比是私立学校(2级系数) 然而,我不知道如何做到这一点 # my data: CNT <- c("A", "A", "A", "A", "A", "B", "B", "B", "C", "C", "C

我试图计算一组中某个因素的不同水平的百分比

我有嵌套数据,希望看到每个国家的学校百分比是私立学校(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)
#我的数据:

CNT只需按CNT
CNT
对数据进行分组,然后对分组进行汇总,以计算您拥有的
FACTOR==1
的实例数与该组内观察的总数(
n()


只需按
CNT
对数据进行分组,然后对分组进行汇总,以计算您拥有的
FACTOR==1
的实例数与该组内观察的总数(
n()

另一种解决方案(使用base-R):

另一种解决方案(使用base-R):


这在我的示例中起作用,但在我的数据集上出现了一个严重错误
n()
只能在dplyr谓词中使用。还有一些我不理解的回溯,这意味着你不能在
dplyr
函数之外使用
mutate
summary
。由于您将问题标记为
dplyr
我希望您能够处理数据dplyr样式:)我通常是这样,但我并不了解所有内容,我只是边走边学,以前从未遇到过这种问题。谢谢你的解释!这在我的示例中起作用,但在我的数据集上出现了一个严重错误
n()
只能在dplyr谓词中使用。还有一些我不理解的回溯,这意味着你不能在
dplyr
函数之外使用
mutate
summary
。由于您将问题标记为
dplyr
我希望您能够处理数据dplyr样式:)我通常是这样,但我并不了解所有内容,我只是边走边学,以前从未遇到过这种问题。谢谢你的解释!我想你也可以参考上一篇文章,找到一个更一般的答案,用另一种方法计算分组df中的相对频率:
mydata%>%count(CNT,FACTOR)%%>%group_by(CNT)%%>%mutate(n=n/sum(n))
我想你也可以参考上一篇文章,找到一个更一般的答案,用另一种方法计算分组df中的相对频率:
mydata%>%count(CNT,FACTOR)%%>%groupby(CNT)%%>%mutate(n=n/sum(n))
library(dplyr)

mydata %>%
  group_by(CNT) %>%
  summarise(
    priv_perc = sum(FACTOR == 1, na.rm=T) / n()
  )
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