r - 如何按类别制作频率表

标签 r

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

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

我问你是否可以帮我编写一个代码来计算每种类型的类(class)中每种性别的比例。

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

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

可以通过将性别除以给定类型类(class)的学生总数来计算。

For example: There are 42 females studying online out of the total (42+69)=111. Answer: In the online class 38% are females.

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

最佳答案

使用prop.table():

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

关于r - 如何按类别制作频率表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151063/

相关文章:

r - 如何输出数据框中行范围内的最大值?

r - 使用正则匹配提取数据并移动到 R 中的新数据帧行

r - 如何检查我们在excel中具有相同唯一ID的每个唯一值

r - R中有没有一种方法可以根据条件合并行?

r - 使用 R 估计滚动风险值(value) (VaR)

javascript - 使用 R 将字段添加到在线表单并抓取生成的 javascript 创建的表

r - Shiny 在本地主机上工作正常,但在远程主机上却不行,Windows 上的 shiny-server.conf 在哪里?

r - 什么是 Matlab/Octave 等效项或 R 的 'merge'(或 'expand.grid')?

RcppRoll 窗口打开

r - 替代使用循环来替换 R 中大数据集的值?