如何计算等比增量数据中两值的增量差值并判定结果?
解决方案
你的数值序列是前值两倍递增的,每个数值可表示为 初始值 × 2^k(k为增量步数,整数)。两个数值的增量步数差等于 log2(var1/var2),这个值就是var1比var2高的增量个数。我们只需判断这个差值是否≥3,即可设置test为TRUE。
修改后的dplyr代码如下:
library(dplyr) testdata <- data.frame( var1 = c(0.25, 0.5, 2, 64, 32), var2 = c(0.064, 64, 32, 16, 0.128) ) testdata %>% mutate( # 计算增量步数差 increment_diff = log2(var1/var2), # 判断步数差是否≥3 test = case_when( increment_diff >= 3 ~ TRUE, TRUE ~ FALSE ) )
代码说明
log2(var1/var2):利用对数运算直接对应增量步数——因为每一步是数值翻倍,log₂的结果恰好是两个数之间的增量步数差。- 当步数差≥3时,test设为TRUE;其余情况为FALSE。
验证你的示例:
- 第5行
var1=32、var2=0.128:log2(32/0.128)≈7.965,大于3,test=TRUE; - 第4行
var1=64、var2=16:log2(64/16)=2,小于3,test=FALSE,完全符合需求。
内容的提问来源于stack exchange,提问作者Haakonkas
相关产品推荐
相关产品推荐

