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

R语言中检测斜杠/失败,求正确提取数值的实现方法

解决R中日期列数值提取与格式保留问题

原代码问题分析

你的代码存在两个核心问题:

  • str_detect参数顺序错误:该函数第一个参数是待检测的字符串向量,第二个才是匹配模式,你写反成str_detect("/", MR_all$period),导致无法正确识别含斜杠的行。
  • case_when条件逻辑错误:你用子集后的向量作为判断条件,不符合case_when逐行判断的语法要求。

修正后的代码

# 加载所需包(如果未加载)
library(stringr)
library(dplyr)

# 正确检测含斜杠的行
detect_slash <- str_detect(MR_all$period, "/")

# 生成目标列period_3
MR_all <- MR_all %>%
  mutate(period_3 = case_when(
    detect_slash ~ period,  # 含斜杠的行保留原内容
    TRUE ~ gsub("\\D", "", period)  # 不含斜杠的行提取所有数值
  ))

代码说明

  • str_detect(MR_all$period, "/"):遍历period列每一行,判断是否包含斜杠,返回对应布尔向量。
  • case_when逐行处理:
    • 若行含斜杠,直接保留原period内容;
    • 其他情况(纯年份、字符描述行),用gsub("\\D", "", period)删除所有非数字字符,仅保留数值部分。

内容的提问来源于stack exchange,提问作者Aby Ramata Almamy Mbaye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:11:20