检查一个值相对于另一个值的百分比

Checking percentage of a value either side of another value

我有两个值(beforeafter),想检查 beforeafter 之间的差异(变化)是否小于或等于达到或大于或等于另一个值 (agreed) 的百分之三 (+/-3.00%)。

例如:

---------------------------
| Agreed | Before | After |
---------------------------
| 100    | 110    | 85    | (FALSE)
---------------------------
| 350    | 300    | 480   | (FALSE)
---------------------------
| 167    | 166    | 166   | (TRUE)
---------------------------
| 200    | 220    | 206   | (TRUE)
---------------------------

请注意 beforeafter 中的值确实可以相同。我要检查的是 after 值是否为 agreed (+/-3.00%).

两侧的百分之三

如何实现?

这给出了你想要的输出

> agreed = c(100,350,167)
> before = c(110,300,166)
> after = c(85, 480, 165)
> 
> abs(after-before)
[1]  25 180   1
> abs(after-before)/agreed
[1] 0.250000000 0.514285714 0.005988024
> abs(after-before)/agreed<0.03
[1] FALSE FALSE  TRUE

我想出了一个适合我的方法。

首先,我将 afteragreed 之间的差异百分比保存到新列 (percentage),然后我根据以下内容进行检查并将结果分配给新列(threePercent):

df$threePercent <- ifelse(df$percentage >= 0.03 | df$percentage <= -0.03, "YES", "NO")

这非常适合我。