如何计算R中两个分类变量的比例

How to calculate the proportion of two categorical variables in R

目前我正在写硕士论文。我的大学向我提供了学生数据,其中包含多个变量,例如年龄、性别、学科、教师、访问过的课程、收到的成绩、学生流失情况等等。我的任务是分析这些数据,以预测哪个学生会流失以及哪个学生会获得学位。在这样做之前,我想尝试进行探索性数据分析。目前我想计算两个分类变量的比例:主题和学生是否流失。

我为要计算的统计数据创建了一个简单示例:

Subject_Churn_df <- data.frame(Subject = c("Math", "Engineering", "IT", "Math", "IT", "IT", "Engineering"),
                               Churn = c("Yes", "Yes", "No", "No", "Yes", "Yes", "No"))

现在我想确定哪个主题流失了多少比例。

我尝试了以下代码:

Subject_Churn_df %>% 
  select(Subject, Churn) %>% 
  table() %>% 
  prop.table()

但结果我得到

             Churn
Subject              No       Yes
  Engineering 0.1428571 0.1428571
  IT          0.1428571 0.2857143
  Math        0.1428571 0.1428571

在这种情况下,比例是通过考虑整个样本来计算的。但是,我想知道每个主题的流失率,例如

Engineering 0.5
IT 0.333333
Math: 0.5

我会感激每一个tip/solution。非常感谢。

虽然这在 Stack Overflow 上可能更好,但您的具体问题是您没有在 proportions 调用中将正确的参数传递给 margin,因此您的比例超过了整个 table。由于对 table 的调用将主题放在行中,因此您希望将 $1$ 传递给 margin,如下所示:

Subject_Churn_df <- data.frame(Subject = c("Math", "Engineering", "IT", "Math", "IT", "IT", "Engineering"),
Churn = c("Yes", "Yes", "No", "No", "Yes", "Yes", "No"))

proportions(table(Subject_Churn_df), margin = 1L)

这导致:

             Churn
Subject              No       Yes
  Engineering 0.5000000 0.5000000
  IT          0.3333333 0.6666667
  Math        0.5000000 0.5000000

我相信你想要什么。