r - 将计算应用于按分类变量分组的数据框
问题描述
可能是重复的,但我一直无法找到这个问题的简单实例。
我有一个数据框,DF
:
Event ID Objective.Bi Subjective.Bi Confidence Outcome Conf.Bin
1 1 0 0 80 Correct 80-89
2 2 0 1 50 Incorrect 50-59
3 3 0 1 60 Incorrect 60-69
4 4 NA 0 80 <NA> 80-89
5 5 0 1 30 Incorrect 30-39
6 6 0 0 60 Correct 60-69
7 7 1 0 80 Incorrect 80-89
8 8 0 0 10 Correct 10-19
9 9 1 0 10 Incorrect 10-19
10 10 0 0 50 Correct 50-59
11 11 1 1 90 Correct 90-100
12 12 0 1 50 Incorrect 50-59
13 13 1 0 80 Incorrect 80-89
14 14 0 0 50 Correct 50-59
15 15 1 1 10 Correct 10-19
16 16 1 1 20 Correct 20-29
17 17 1 0 80 Incorrect 80-89
18 18 1 1 50 Correct 50-59
19 19 1 1 20 Correct 20-29
20 20 1 1 99 Correct 90-100
21 21 1 0 90 Incorrect 90-100
22 22 0 0 90 Correct 90-100
23 23 NA 1 10 <NA> 10-19
24 24 1 0 20 Incorrect 20-29
25 25 0 0 80 Correct 80-89
26 26 0 0 80 Correct 80-89
27 27 0 0 50 Correct 50-59
28 28 0 0 50 Correct 50-59
29 29 NA 1 60 <NA> 60-69
30 30 1 1 70 Correct 70-79
我想按Conf.Bin
变量对数据进行分组,然后计算Correct
Outcome
每组中值的比例(即%.Correct
=组中正确结果的数量/组中的观察次数)。例如,我想要的输出如下所示:
Conf.Bin %.Correct
1 10-19 50.0
2 20-29 66.7
3 30-39 00.0
...
最简单的方法是什么?我过去使用group_by
过dplyr
,但不确定如何将此手动计算应用于每个组以产生所需的结果。
解决方案
我可以通过调整上一篇文章中的脚本来解决这个问题:Relative frequency / ratios with dplyr
这种使用为每组中的每个dplyr
生成一个具有相对频率的数据帧:Outcome
Conf.Bin
DF.Correct<- as.data.frame(DF %>%
group_by(Conf.Bin, Outcome) %>%
summarise(n = n()) %>%
mutate(freq = n/ sum(n)))
head(DF.Correct)
# Conf.Bin Outcome n freq
#1 10-19 <NA> 1 0.2500000
#2 10-19 Correct 2 0.5000000
#3 10-19 Incorrect 1 0.2500000
#4 20-29 Correct 2 0.6666667
#5 20-29 Incorrect 1 0.3333333
#6 30-39 Incorrect 1 1.0000000
但由于我只对Correct
Outcome
每个组中值的频率感兴趣,我们只是子集DF.Correct
:
DF.Correct <- filter(DF.Correct, Outcome == "Correct")
head(DF.Correct)
# Conf.Bin Outcome n freq
#1 10-19 Correct 2 0.5000000
#2 20-29 Correct 2 0.6666667
#3 50-59 Correct 5 0.7142857
#4 60-69 Correct 1 0.3333333
#5 70-79 Correct 1 1.0000000
#6 80-89 Correct 3 0.4285714
NA
注意:我在这里的相对频率计算中包括了观察。
推荐阅读
- typescript - 如何在 TypeScript 中创建具有类型别名的对象?
- ios - Swift_为什么不显示假期?
- c - 从具有少数成员的结构中将一行写入文件行
- android - React Native App 中的 Flutter Device Preview 等价物?
- r - 在 Windows 上离线安装 R 包“rgdal”及其外部依赖项
- python - 命令行不使用 conda 环境中的 python,即使它处于活动状态,可能是 .bash_profile 中的问题?
- java - 如何使用 try catch 继续循环?
- azure - 我的 Azure 帐户中所有这些未命名的服务主体是什么?
- python - 如果值已更改,可编辑 Bokeh DataTable 中的颜色文本
- mule - 如何在 mule4 中为 2 位数字格式化月/日?