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

如何在R语言中从"WEEK N"格式提取数字并处理数据集

解决R中提取WEEK列数字的问题

这是个很常见的字符串处理需求,在R里有好几种简单的实现方式,我给你列几个最常用的:

方法1:用Base R的gsub()(无需额外装包)

Base R自带的gsub()函数可以批量替换字符串内容,我们只需要把"WEEK "(注意后面有个空格)替换成空字符串,再转成数值类型就行:

# 直接修改原数据的WEEK列
data1.2$WEEK <- as.numeric(gsub("WEEK ", "", data1.2$WEEK))

解释一下:

  • gsub("WEEK ", "", data1.2$WEEK):遍历WEEK列的每个值,把里面的"WEEK "替换为空,剩下纯数字的字符串
  • as.numeric():把处理后的字符型数字转成数值型,方便后续做统计分析

方法2:用Tidyverse的stringr包(更直观的字符串处理)

如果你平时习惯用tidyverse生态,stringr包的函数会更易懂,有两种方式可选:

方式2.1:用str_remove()精准移除前缀

先确保你装了tidyverse包,然后用mutate()配合str_remove()修改列:

# 如果没装tidyverse先安装
install.packages("tidyverse")
library(tidyverse)

# 管道式修改数据
data1.2 <- data1.2 %>%
  mutate(WEEK = as.numeric(str_remove(WEEK, "WEEK ")))

方式2.2:用parse_number()直接提取数字(更省心)

parse_number()会自动忽略字符串里的非数字内容,直接提取出数字,就算你的WEEK列偶尔出现小写"week"或者其他前缀,它也能正确工作:

data1.2 <- data1.2 %>%
  mutate(WEEK = parse_number(WEEK))

测试一下效果

拿你提供的前6行WEEK值测试:

test_data <- tibble(
  WEEK = c("WEEK 1", "WEEK 1", "WEEK 1", "WEEK 1", "WEEK 2", "WEEK 1")
)

# 用parse_number处理后的结果
test_data %>% mutate(WEEK = parse_number(WEEK))

输出的WEEK列会变成数值型的1, 1, 1, 1, 2, 1,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:58:10