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

R语言使用ifelse、is.na替换dataframe中q3列NA值的实现问题

你可以通过嵌套条件判断+日期格式正则匹配实现需求,具体代码如下:

基础R实现(无需加载额外包)

核心逻辑是在替换q3的NA值前,先判断对应times_30的内容是否符合日期格式:

df$q3 <- ifelse(
  is.na(df$q3),
  # 匹配dd/mm/yyyy格式的日期内容
  ifelse(grepl("^\\d{2}/\\d{2}/\\d{4}$", df$times_30), "No answer", df$times_30),
  df$q3
)

如果你的日期存在单数字日/月的情况(比如1/2/2021),可以把正则调整为^\\d{1,2}/\\d{1,2}/\\d{4}$适配该场景。

dplyr实现(代码可读性更高)

如果你习惯使用tidyverse生态的函数,可以用case_when实现相同逻辑:

library(dplyr)

df <- df %>%
  mutate(q3 = case_when(
    # q3非空直接保留原值
    !is.na(q3) ~ q3,
    # times_30为日期时替换为No answer
    grepl("^\\d{2}/\\d{2}/\\d{4}$", times_30) ~ "No answer",
    # 其他情况用times_30的内容填充
    TRUE ~ times_30
  ))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:15:06