检查另一个值两侧的值的百分比

时间:2017-09-15 13:59:54

标签: r percentage

我有两个值(beforeafter)并想检查beforeafter之间的差异(变化)是否小于或等于或大于或等于3%的另一个值(+/-3.00%)的任何一种方式(agreed)。

例如:

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

请注意,beforeafter中的值确实相同。我要检查的是after值是agreed+/-3.00%)两侧的百分之三。

如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

这会提供您想要的输出

> 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

答案 1 :(得分:1)

我找到了一种方法,这对我很有用。

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

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

这对我来说很有效。