r - 根据其他列计算列中的比率
问题描述
我正面临一个思考和编程问题。请参阅下面我的问题,我不知道什么是正确的方法(使用 DPLYR 的 group_by,但没有结果)。非常感谢您在这里尝试帮助我!
我有一个这样的数据集:
Numbers Area Cluster
1 A 1
0.8 A 1
0.78 A 1
0.7 B 1
0.4 A 2
0 C 1
我想计算两个新列:
- 显示特定集群中出现的区域百分比(Column_Example_1)
- 每个集群,列号的新索引(范围从 1 - 0)(Column_example_2)。新的比率应该基于列 Numbers #note:在示例中它只是一个示例,它也可以做不同的事情,但我们要确保列 Numbers 领先)
结果应该是这样的:
Numbers Area Cluster Example_1 Example_2
1 A 1 60% #5x cluster 1, and 3x Area A) 1
0.8 A 1 60% 0.8
0.78 A 1 60% 0.78
0.7 B 1 20% 0.7
0.4 A 2 100% 1
0 C 1 20% 0
解决方案
由于要保留所有行,因此可以按如下方式计算相对频率:
library(tidyverse)
df <- data.frame(numbers = c(1, .8, .78, .7, .4, 0),
area = c("A", "A", "A", "B", "A", "C"),
cluster = c(1, 1, 1, 1, 2, 1))
df %>%
group_by(cluster) %>%
mutate(example_1 = n()) %>%
group_by(area, cluster) %>%
mutate(example_1 = n() / example_1)
# A tibble: 6 x 4
# Groups: area, cluster [4]
numbers area cluster example_1
<dbl> <fct> <dbl> <dbl>
1 1 A 1 0.6
2 0.8 A 1 0.6
3 0.78 A 1 0.6
4 0.7 B 1 0.2
5 0.4 A 2 1
6 0 C 1 0.2
推荐阅读
- authentication - 如何在 Flask 应用程序中结合 flask_ldap3_login 和 flask_httpauth 并针对 ldap.forumsys.com 测试身份验证
- python - 试图理解为什么 iloc 不能用于为选定的多列赋值
- python - Python:蒙特卡罗模拟
- discord - 如何从 guildMemberAdd 事件中设置频道名称?
- javascript - 忘记使用 NodeJs/Knex/Nodemailer 的密码功能并且无法正常工作
- kubernetes - 如何在 Kubernetes 中显示图像标签?
- laravel-nova - Laravel Nova 自动刷新资源
- jasper-reports - Jasper 报告中的 BigDecimal 算术
- ios - 无法解构“this.$projectDataService.getRuntimePackage(...)”的属性“版本”,因为它未定义。NativeScript 7 + 角 10
- python - PongGame 球拍移动,但之前绘制的球拍不会“擦除”