如何将数据框中累积变化值转换为带符号的乘性因子
将累积变化值转换为乘性因子值
可以通过向量化条件判断快速实现需求,无需逐行循环:
基础R实现
# 定义原始数据框 df <- data.frame(col1 = c(0.12, 0.05), col2 = c(-0.06, 0.09)) # 应用转换逻辑:正数加1,负数减1 df_transformed <- data.frame(lapply(df, function(x) ifelse(x > 0, x + 1, x - 1))) # 查看结果 print(df_transformed)
tidyverse(dplyr)实现
如果你习惯用dplyr语法,也可以这样写:
library(dplyr) df_transformed <- df %>% mutate(across(everything(), ~ ifelse(.x > 0, .x + 1, .x - 1)))
输出结果
运行代码后会得到你期望的结果:
col1 col2 1 1.12 -1.06 2 1.05 1.09
逻辑说明
- 正数(如
0.12):执行x + 1,得到增长对应的乘性因子1.12(代表12%增长) - 负数(如
-0.06):执行x - 1,得到下降对应的乘性因子-1.06(代表6%下降)
内容的提问来源于stack exchange,提问作者ravinglooper
相关产品推荐
相关产品推荐

