我有两个值(before
和after
)并想检查before
和after
之间的差异(变化)是否小于或等于或大于或等于3%的另一个值(+/-3.00%
)的任何一种方式(agreed
)。
例如:
---------------------------
| Agreed | Before | After |
---------------------------
| 100 | 110 | 85 | (FALSE)
---------------------------
| 350 | 300 | 480 | (FALSE)
---------------------------
| 167 | 166 | 166 | (TRUE)
---------------------------
| 200 | 220 | 206 | (TRUE)
---------------------------
请注意,before
和after
中的值确实相同。我要检查的是after
值是agreed
(+/-3.00%
)两侧的百分之三。
如何实现这一目标?
答案 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)
我找到了一种方法,这对我很有用。
首先,我将after
和agreed
之间的差异百分比保存到新列(percentage
),然后根据以下内容对其进行检查,并将结果分配给新列(threePercent
):
df$threePercent <- ifelse(df$percentage >= 0.03 | df$percentage <= -0.03, "YES", "NO")
这对我来说很有效。