【发布时间】:2021-06-18 21:28:40
【问题描述】:
所以我认为以前没有人问过这个问题,但是 SO 搜索可能只是被“比率”和“刻面”的组合弄糊涂了。我正在尝试计算生产率比率;在给定的日期或时间段内为工人数量生产的小部件数量。我将我的数据结构化在一个数据框中,每个小部件每天由每个工人在其自己的记录中生成,其他工人在当天工作但没有在他们自己的记录中生成小部件,以及各种元数据。
类似这样的:
| widget_ind | employee_active_ind | employee_id | day | product_type | employee_bu |
|---|---|---|---|---|---|
| 1 | 1 | 123 | 6/1/2021 | pc | americas |
| 0 | 1 | 234 | 6/1/2021 | mac | emea |
| 0 | 1 | 345 | 6/1/2021 | mac | apac |
| 1 | 1 | 444 | 6/1/2021 | mac | americas |
| 1 | 1 | 333 | 6/1/2021 | pc | emea |
| 0 | 1 | 356 | 6/1/2021 | pc | americas |
我试图找出 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 记录中的数字,然后对该集合求和并显示结果。我要添加的皱纹是除以当天在职员工的数量,虽然你可以在某一天让一些人出去,但你永远不会让所有人都出去。但这不是 ggplot 正在做的事情吗?
【问题讨论】:
-
您应该只使用 ggplot 进行绘图,而不是计算值,因为您没有那么多控制权。请在reproducible format 中分享您的数据,例如
dput(),以便我们可以复制/粘贴到 R 中进行测试。您希望为样本数据绘制什么值?employee_active_ind的值是否为 0?