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

R语言:基于两列值创建Coins/Copay新列的技术问询

在R中按多条件生成Coins/Copay列

我帮你梳理了需求,并用R的dplyr包(处理数据超顺手的工具)来实现这个逻辑,代码清晰易懂,每个条件都对应明确的分支:

先明确需求条件

  • 计划A、B、C:存在Coins数值但Copay为NA → Coins/Copay=1
  • 计划D、E:存在Copay数值但Coins为NA → Coins/Copay=0
  • 计划F:Coins和Copay均为0 → Coins/Copay=0
  • 计划G、H:Coins和Copay均有数值且Copay≠0 → Coins/Copay=0
  • 计划I、J:Coins>Copay且Copay=0 → Coins/Copay=1

实现代码

首先确保你安装了dplyr包(没装的话先跑install.packages("dplyr")),然后用以下代码:

library(dplyr)

# 示例数据集(和你给出的结构一致)
df <- tibble(
  Plans = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "A"),
  Coins = c(0, 5, 10, NA, NA, 0, 3, 7, 15, 20, NA),
  Copay = c(NA, NA, NA, 20, 15, 0, 5, 10, 0, 0, 5)
)

# 新增Coins/Copay列并按条件赋值
df <- df %>%
  mutate(
    `Coins/Copay` = case_when(
      # 条件1:A/B/C,Coins存在(非NA)且Copay为NA
      Plans %in% c("A", "B", "C") & !is.na(Coins) & is.na(Copay) ~ 1,
      # 条件2:D/E,Copay存在且Coins为NA
      Plans %in% c("D", "E") & !is.na(Copay) & is.na(Coins) ~ 0,
      # 条件3:F,Coins和Copay都是0
      Plans == "F" & Coins == 0 & Copay == 0 ~ 0,
      # 条件4:G/H,两者都有值且Copay≠0
      Plans %in% c("G", "H") & !is.na(Coins) & !is.na(Copay) & Copay != 0 ~ 0,
      # 条件5:I/J,Coins>Copay且Copay=0
      Plans %in% c("I", "J") & Coins > Copay & Copay == 0 ~ 1,
      # 处理其他未覆盖的情况(如果有的话,这里设为NA,你可以根据需求调整)
      TRUE ~ NA_real_
    )
  )

# 查看结果
print(df)

代码解释

  • 用case_when()来处理多条件分支,每个条件对应一个赋值,逻辑清晰不混乱
  • 每个条件都严格对应你给出的规则,比如Plans %in% c("A", "B", "C")就是匹配指定计划,!is.na(Coins)判断Coins有数值,is.na(Copay)判断Copay为缺失值
  • 最后加了TRUE ~ NA_real_来处理所有没覆盖到的边缘情况,避免出现错误,你可以根据实际数据调整这个默认值

运行示例的输出结果

# A tibble: 11 × 4
   Plans Coins Copay `Coins/Copay`
   <chr> <dbl> <dbl>         <dbl>
 1 A         0    NA             1
 2 B         5    NA             1
 3 C        10    NA             1
 4 D        NA    20             0
 5 E        NA    15             0
 6 F         0     0             0
 7 G         3     5             0
 8 H         7    10             0
 9 I        15     0             1
10 J        20     0             1
11 A        NA     5            NA

你可以把自己的真实数据集替换掉示例中的df,直接运行就能得到想要的结果啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:26:32