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

R语言中基于Time列值修改CA列的条件判断问题

基于Time列修改CA列的修正代码

需求规则回顾

  • 若Time非NA:原CA为2则保持2,其余改为1
  • 若Time为NA:原CA为2则保持2,其余改为0

基础R实现(嵌套ifelse)

用嵌套的ifelse语句直接修改CA列,逻辑完全匹配需求:

dfz <- data.frame(
  Time = c(200, 1000, 500, 800, 1200, 1300, 1500, NA, NA, NA),
  CA = c(rep(0,2),rep(1,2),rep(2,3),rep(0,3)),
  FO = c(rep(0,2),rep(1,2),rep(2,3),rep(0,3))
) 

# 修正后的ifelse代码
dfz$CA <- ifelse(!is.na(dfz$Time),
                 ifelse(dfz$CA == 2, 2, 1),
                 ifelse(dfz$CA == 2, 2, 0))

# 查看结果
print(dfz)

运行后CA列结果为:1, 1, 1, 1, 2, 2, 2, 0, 0, 0,完全符合规则。

tidyverse风格实现(case_when)

如果习惯使用dplyr,case_when的语法更直观,可读性更强:

library(dplyr)

dfz <- dfz %>%
  mutate(CA = case_when(
    !is.na(Time) & CA == 2 ~ 2,
    !is.na(Time) ~ 1,
    is.na(Time) & CA == 2 ~ 2,
    TRUE ~ 0
  ))

逻辑说明

两种方法都是先判断Time是否为NA,再结合原CA的值执行对应修改:

  • 优先保留原CA=2的情况,避免被覆盖
  • 针对Time的两种状态,分别设置非2值的替换规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:52:43