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

如何基于time列删除data.frame指定列的对应值(R语言)

条件性将指定列值置为NA的实现方法(base R & dplyr)

针对名为sample的data.frame,需实现以下规则:

  • 当time列取值为"3"时,将endogenous_ct_01列对应值设为NA
  • 当time列取值为"1"时,将endogenous_ct_03列对应值设为NA

base R 实现

直接通过逻辑索引定位目标行后赋值,无需额外依赖,高效直观:

# 处理endogenous_ct_01列
sample$endogenous_ct_01[sample$time == "3"] <- NA
# 处理endogenous_ct_03列
sample$endogenous_ct_03[sample$time == "1"] <- NA

dplyr 实现

适合管道流操作,两种写法各有侧重:

写法1:使用case_when(适配多条件场景)

library(dplyr)

sample <- sample %>%
  mutate(
    endogenous_ct_01 = case_when(
      time == "3" ~ NA_real_,  # 若列是字符型,替换为NA_character_
      TRUE ~ endogenous_ct_01
    ),
    endogenous_ct_03 = case_when(
      time == "1" ~ NA_real_,
      TRUE ~ endogenous_ct_03
    )
  )

写法2:使用ifelse(单条件下更简洁)

library(dplyr)

sample <- sample %>%
  mutate(
    endogenous_ct_01 = ifelse(time == "3", NA, endogenous_ct_01),
    endogenous_ct_03 = ifelse(time == "1", NA, endogenous_ct_03)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:10:39