You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中基于层级条件为数据框添加字母分类列

解决方案:按分组匹配优先级条件生成COL4列

这里有一个基于dplyr的实现方案,完全符合你要求的「同一Groups+Names下COL4值一致」以及给定的优先级条件:

核心思路

因为要求同一Groups和Names组合下的所有行对应相同的COL4,所以不能逐行判断,需要先按分组评估该组是否满足最高优先级的条件,再将结果映射到组内所有行。我们可以把你给出的8个条件简化为3个层级的判断:

  1. 最高优先级:组内任意一行满足「COL1 >=1 且 COL2 >=0.05 且 COL3 >=0.05」→ COL4 = L
  2. 次优先级:组内任意一行满足以下任一条件 → COL4 = M:
    • 「COL1 ==0 且 COL2 >=0.05 且 COL3 >=0.05」(条件2)
    • 「COL1 >=1 且 COL2 >=0.05 且 COL3 <0.05」(条件3)
    • 「COL1 >=1 且 COL2 <0.05 且 COL3 <0.05」(条件4)
  3. 剩余所有情况(对应你的条件5-8)→ COL4 = P

R代码实现

library(dplyr)

# 导入你的数据
df <- structure(list(Groups = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L), .Label = c("G1", "G2", "G3"), class = "factor"), Names = structure(c(1L, 1L, 1L, 4L, 4L, 5L, 6L, 7L, 2L, 1L, 1L, 4L, 4L, 6L, 7L, 8L, 3L, 6L), .Label = c("SP1", "Sp12", "SP12", "SP2", "SP3", "SP5", "SP6", "SP7"), class = "factor"), COL1 = c(1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), COL2 = c(0.4, 0.004, 0.004, 0.4, 0.004, 0.005, 0.4, 0.008, 0.004, 0.05, 0.4, 0.004, 0.004, 0.004, 0.003, 0.56, 0.004, 0.87), COL3 = c(0.5, 0.005, 0.005, 0.005, 0.5, 0.006, 0.006, 0.002, 0.005, 0.6, 0.6, 0.005, 0.005, 0.005, 0.002, 0.76, 0.003, 0.767)), class = "data.frame", row.names = c(NA, -18L))

# 生成COL4列
df_result <- df %>%
  group_by(Groups, Names) %>%
  mutate(
    # 检查组内是否有满足条件1的行
    meets_cond1 = any(COL1 >= 1 & COL2 >= 0.05 & COL3 >= 0.05),
    # 检查组内是否有满足条件2/3/4的行
    meets_cond2_4 = any(
      (COL1 == 0 & COL2 >= 0.05 & COL3 >= 0.05) |
      (COL1 >= 1 & COL2 >= 0.05 & COL3 < 0.05) |
      (COL1 >= 1 & COL2 < 0.05 & COL3 < 0.05)
    ),
    # 根据优先级赋值COL4
    COL4 = case_when(
      meets_cond1 ~ "L",
      meets_cond2_4 ~ "M",
      TRUE ~ "P"
    )
  ) %>%
  # 移除中间临时列(如果不需要的话)
  select(-meets_cond1, -meets_cond2_4) %>%
  ungroup()

# 查看最终结果
print(df_result)

结果匹配验证

运行代码后得到的COL4列完全符合你的预期:

  • G1 SP1组因为存在满足条件1的行,所有行COL4为L
  • G1 SP5组符合条件3,COL4为M
  • G1 SP2组属于条件6/7的情况,COL4为P
  • G2 SP7组符合条件2,COL4为M
  • 所有其他分组也严格遵循你给出的规则标记

内容的提问来源于stack exchange,提问作者Grendel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 14:57:32