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

如何基于多条件为每个id分配Class(A/B/C)?

R语言分类标注解决方案

步骤1:准备示例数据

先把你提供的示例数据转换成R可识别的数据框:

# 创建示例数据
df <- data.frame(
  id = paste0("id", 1:4),
  var1 = c(1, 0, 0, 1),
  var2 = c(10, 20, 15, 30),
  var3 = c(1, 0, 0, 1),
  var4 = c(0, 2, 1, 1),
  var5 = c(1.5, 2.4, 3.5, 2.1),
  row.names = NULL
)

步骤2:统计Q1、Q2符合数量

逐个变量判断是否符合Q1或Q2条件,再统计每行的符合次数:

library(dplyr) # 未安装先运行 install.packages("dplyr")

df <- df %>%
  # 生成每个变量的Q1/Q2符合标记
  mutate(
    # Q1条件判断
    q1_var1 = var1 == 1,
    q1_var2 = var2 > 15,
    q1_var3 = var3 == 1,
    q1_var4 = var4 == 2,
    q1_var5 = var5 < 2.0,
    # Q2条件判断(无对应规则的变量直接设为FALSE)
    q2_var1 = FALSE,
    q2_var2 = var2 >= 15 & var2 < 25,
    q2_var3 = FALSE,
    q2_var4 = var4 == 1,
    q2_var5 = FALSE
  ) %>%
  # 每行统计Q1、Q2的符合数量
  mutate(
    q1_count = rowSums(select(., starts_with("q1_"))),
    q2_count = rowSums(select(., starts_with("q2_")))
  )

步骤3:按规则标注Class

根据给定的分类规则,为每个id标记对应Class:

df <- df %>%
  mutate(
    Class = case_when(
      q1_count >= 2 ~ "A",
      (q1_count == 1 & q2_count >= 1) | q2_count >= 2 ~ "B",
      TRUE ~ "C"
    )
  )

# 查看最终结果(保留核心列)
df %>% select(id, var1:var5, Class)

结果验证

运行后示例数据的输出结果:

idvar1var2var3var4var5Class
id1110101.5A
id2020022.4B
id3015013.5B
id4130112.1A

完全匹配规则要求。

基础R版本(无需额外包)

如果不想使用dplyr,用基础R也能实现:

# 创建示例数据
df <- data.frame(
  id = paste0("id", 1:4),
  var1 = c(1, 0, 0, 1),
  var2 = c(10, 20, 15, 30),
  var3 = c(1, 0, 0, 1),
  var4 = c(0, 2, 1, 1),
  var5 = c(1.5, 2.4, 3.5, 2.1),
  row.names = NULL
)

# 计算每行Q1、Q2符合数量
df$q1_count <- with(df, 
                    (var1 ==1) + (var2 >15) + (var3 ==1) + (var4 ==2) + (var5 <2.0))
df$q2_count <- with(df, 
                    0 + (var2 >=15 & var2 <25) + 0 + (var4 ==1) + 0)

# 标注Class
df$Class <- ifelse(df$q1_count >=2, "A",
                   ifelse((df$q1_count ==1 & df$q2_count >=1) | df$q2_count >=2, "B", "C"))

# 查看结果
df[, c("id", "var1", "var2", "var3", "var4", "var5", "Class")]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:22:45