如何在R中按指定条件自动填充数据框的Derived_metric列?
解决R数据框Derived_metric列自动填充问题
步骤1:转换数据类型
你的Metric_1和Metric_2列是字符格式,无法直接进行数值比较,需要先转为数值型:
df$Metric_1 <- as.numeric(df$Metric_1) df$Metric_2 <- as.numeric(df$Metric_2)
步骤2:按规则填充Derived_metric
下面提供两种实现方式,按需选择:
方式一:Base R 原生方法
利用嵌套ifelse实现规则逻辑:
df$Derived_metric <- ifelse( df$Metric_1 > 0.02 | df$Metric_2 > 0.02, 3, ifelse( (df$Metric_1 > 0.01 & df$Metric_1 < 0.02) | (df$Metric_2 > 0.01 & df$Metric_2 < 0.02), 2, ifelse(df$Metric_1 < 0.01 | df$Metric_2 < 0.01, 1, NA) ) )
方式二:dplyr 包方法(更清晰易读)
先加载dplyr包,再用case_when按优先级编写规则:
library(dplyr) df <- df %>% mutate(Derived_metric = case_when( Metric_1 > 0.02 | Metric_2 > 0.02 ~ 3, (Metric_1 > 0.01 & Metric_1 < 0.02) | (Metric_2 > 0.01 & Metric_2 < 0.02) ~ 2, Metric_1 < 0.01 | Metric_2 < 0.01 ~ 1, TRUE ~ NA_real_ # 处理等于1%/2%的边界情况,可根据需求修改 ))
说明
- 规则优先级:先判断是否存在大于2%的指标,再判断1%-2%区间的指标,最后判断小于1%的指标
- 边界值(如等于1%或2%)当前设为
NA,若需要调整规则可修改对应条件
内容的提问来源于stack exchange,提问作者Rbeginner
相关产品推荐
相关产品推荐

