首页 > 解决方案 > 如何按班级制作频率表

问题描述

这是我到目前为止设置的代码:

library(dslabs)
library(dplyr)
library(lubridate)

data("reported_heights")

dat <- mutate(reported_heights, date_time = ymd_hms(time_stamp)) %>%
  filter(date_time >= make_date(2016, 01, 25) & date_time < make_date(2016, 02, 1)) %>%
  mutate(type = ifelse(day(date_time) == 25 & hour(date_time) == 8 & between(minute(date_time), 15, 30), "inclass","online")) %>%
  select(sex, type, time_stamp)

y <- factor(dat$sex, c("Female", "Male"))
x <- dat$type

counter <- count(dat, sex,type)

它为我创建了一个看起来像这样的 tbl_df,链接如下:

      sex | type    | n 
1  Female | inclass | 26
2  Male   | inclass | 13
3  Female | online  | 42
4  Male   | online  | 69

我在问您是否可以帮助我编写一个代码来计算每种类型中每种性别的比例。

我一直在尝试使用 x 字符“inclass”和“online”作为添加比例列的列来创建一个新表,然后将 y 因子“男性”和“女性”作为行。我一直在尝试这样做pull()prop.table()但我是一个完全的新手,如果你们美丽的专家可以帮助我,这对我来说意味着世界。我已经看了几个小时的答案,也许答案已经出来了,所以请原谅我似乎找不到它....非常感谢。

每种类型(课堂和在线)中的性别比例(男性和女性)是多少?

可以通过将性别除以给定类型班级的学生总数来计算这一点。

例如:在总数(42+69)=111中,有42名女性在线学习。答:在线课程中 38% 是女性。

我们如何在 R 中做到这一点?

标签: r

解决方案


使用prop.table()

prop.table(table(y, x), 2)
#        x
#y          inclass    online
#  Female 0.6666667 0.3783784
#  Male   0.3333333 0.6216216

推荐阅读