【发布时间】:2019-12-19 14:02:53
【问题描述】:
我是一名兼职 R 用户,我正在寻找有关以下查询的一些建议:
我正在尝试创建一个 SPC 图表,该图表将根据高于/低于平均值的一些数据点来提高和/或降低。我知道那里有经过尝试和测试的 R 包,例如 qcc 可以很容易地生成一个漂亮的 SPC 图,但不幸的是,它似乎没有达到我们想要的效果,即显示基于控制限制的升级或降级低于或高于 8 分。 (至少从我所见)。
我在手动创建平均值和控制限制后的最初想法是创建一个变量,当数据低于或超过限制时,该变量将分配一个 TRUE 或 FALSE 值,然后创建 TRUE / FALSE 值的运行计数,使用 runner 包,然后是另一个变量,当 >= 9 时将重置运行计数。我发现当运行计数达到 9 时计数重置为 1,但在变量再次更改之前不会按预期重新计算在真/假之间。请以下面的代码和数据输出为例:
make count of n above and below the mean
dat4 = dat4 %>%
group_by(`Dept`) %>%
mutate(Count = case_when(n > Mean ~ TRUE,
n < Mean ~ FALSE))
create a running count of the number of times n moves above / below the mean
dat4 = dat4 %>%
group_by(`Dept`) %>%
mutate(run = streak_run(Count))
reset the run when it reaches 8 then start over again for each Dept
dat4 = dat4 %>%
group_by(`Dept`, run) %>%
mutate(runreset = case_when(run >= 9 ~ streak_run(run),
run < 9 ~ run))
请注意,数据以数据框格式存储(以下格式只是为了让大家更容易阅读作为示例):
Count <- c(F, T, T, T, T, T, T, T, T, T, T, T, F, F, T)
run <- c(1,1,2,3,4,5,6,7,8,9,10,11,1,2,1)
runreset <- c(1,1,2,3,4,5,6,7,**8,1,1,1**,1,2,1)
我希望看到的是当它超过 8 时开始重复计数:
runreset <- c(1,1,2,3,4,5,6,7,**8,1,2,3**,1,2,1)
任何关于我如何尝试解决此问题的想法将不胜感激,当然,此后的下一步是根据每个部门的 runreset 何时通过 8 重新计算控制限制。
【问题讨论】:
标签: r variables dplyr statistics