R语言根据多列分组阈值条件创建布尔新列的实现方法
实现方法
方法1:基础R实现
直接通过apply逐行统计满足阈值要求的列数,判断是否≥3即可:
# 定义各列对应的阈值 thresholds <- c(A = 990, B = 990, C = 1000, D = 1000, E = 1005, G = 1005) # 逐行计算满足条件的列数,生成新列 df$`above threshold` <- apply(df[, names(thresholds)], 1, function(x) { sum(x > thresholds, na.rm = TRUE) >= 3 })
参数说明:na.rm = TRUE 表示遇到NA值时不计入满足条件的计数,符合常规逻辑,若需要特殊处理NA可自行调整。
方法2:tidyverse(dplyr)实现
适合习惯tidyverse语法的场景:
library(dplyr) df <- df %>% rowwise() %>% mutate(`above threshold` = sum( A > 990, B > 990, C > 1000, D > 1000, E > 1005, G > 1005, na.rm = TRUE ) >= 3) %>% ungroup()
实现绿色标记输出效果
如果需要将above threshold为TRUE的行标记为绿色,可以使用gt包渲染表格:
# 未安装gt包先执行 install.packages("gt") library(gt) df %>% gt() %>% tab_style( style = cell_fill(color = "lightgreen"), locations = cells_body(rows = `above threshold` == TRUE) )
内容的提问来源于stack exchange,提问作者Lili
相关产品推荐
相关产品推荐

