r - 在保留分面变量的同时计算 ggplot2 图中的比率
问题描述
所以我认为以前没有人问过这个问题,但是 SO 搜索可能只是被“比率”和“刻面”的组合弄糊涂了。我正在尝试计算生产率比率;在给定的日期或时间段内为工人数量生产的小部件数量。我将我的数据结构化在一个数据框中,每个小部件每天由每个工人在其自己的记录中生成,其他工人当天工作但在他们自己的记录中也没有生成小部件,以及各种元数据。
像这样的东西:
widget_ind | employee_active_ind | 员工ID | 天 | 产品类别 | employee_bu |
---|---|---|---|---|---|
1 | 1 | 123 | 2021 年 6 月 1 日 | 个人电脑 | 美洲 |
0 | 1 | 234 | 2021 年 6 月 1 日 | 苹果电脑 | 欧洲、中东和非洲 |
0 | 1 | 345 | 2021 年 6 月 1 日 | 苹果电脑 | 亚太地区 |
1 | 1 | 444 | 2021 年 6 月 1 日 | 苹果电脑 | 美洲 |
1 | 1 | 333 | 2021 年 6 月 1 日 | 个人电脑 | 欧洲、中东和非洲 |
0 | 1 | 356 | 2021 年 6 月 1 日 | 个人电脑 | 美洲 |
我试图找到widget_inds与employee_active_inds的比率,随着时间的推移,同时保留元数据,以便我可以在ggplot2代码中过滤或分面,例如:
plot <- ggplot(data = df[df$employee_bu == 'americas',],aes(y = (widget_ind/employee_active_ind), x = day)) +
geom_bar(stat = 'identity', position = 'stack') +
facet_wrap(product_type ~ ., scales = 'fixed') + #change these to look at different cuts of metadata
print(plot)
保留元数据很有吸引力,而不是通过各种组合对单个数据框进行总结,但是没有分面的结果甚至都不正确(例如,ggplot 显示的条形图高度为每人约 18 个小部件;创建一个汇总数据框没有分面显示每人少于 1 个小部件的比率)。
我目前在运行 ggplot 代码时遇到此错误:
Warning message:
Removed 9865 rows containing missing values (geom_bar).
哪个没有意义,因为在我的数据框中, widget_ind 和 employee_active_ind 都没有 NA 值,所以计算两者的比率应该总是有效的?
编辑1:澄清employee_active_ind:我不应该有任何employee_active_ind = 0,但我当前的连接会产生它们(并且它通过了现实嗅探测试;我们尝试建模的过程允许您在第1天进行工作,从而产生一个小部件在第 2 天,您可能不做任何工作,因此当天不会被视为活跃)。我想我需要重新考虑我的数据结构。即便如此,我在这里假设 ggplot2 的行为就像给定条形图一样;它在给定的一天(以及任何方面和过滤器)中获取每个 widget_ind 记录中的数字,然后对该集合求和并显示结果。我要添加的皱纹是除以当天在职员工的数量,虽然你可以在某一天让一些人出去,但你永远不会让所有人都出去。但那不是
解决方案
我同意 MrFlick 的观点——尤其是关于employee_active_ind
0 的问题。如果你有它们,这可能会产生 NA 值,其中某些值除以 0。
推荐阅读
- php - 使用 PHP 将事件导出到 Google 日历
- go - Golang通过追加获取插入值的索引
- android - 在反应本机中链接库时出错
- java - 正确删除 JPA 中帖子的评论
- mule - Mule 4 Munits:具有基本身份验证的呼叫流程
- javascript - 如何修复 Veracode - 跨站点脚本 - CWE ID 80 - 基本 XSS - 在 .each 函数中使用 $(item)
- angular - Angular 7 在 gh-pages 上托管的 PWA 问题
- html - 谷歌浏览器无法显示 .eps 文件
- reactjs - 在使用 react、redux(thunk) 的某些组件中使用全局状态和局部状态
- sql-server - 当我第一次将该报告部署到报告服务器时如何为报告设置正确的数据源