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

如何在R语言中基于模式从字符串创建数据集

将字符向量转换为指定格式的数据集(R语言实现)

需求

给定如下R字符向量:

ST <- c("7.5 (wk0)  / 7.4 (wk4)  / 10.3 (wk8)  / 12.7 (wk12)",
        "140.0 (wk0)  / 161.3 (wk4)  / 142.5 (wk8)")

需要将其转换为包含STvalue(数值)和WEEK(周数)两列的数据集,最终格式如下:

STvalue  WEEK
7.5        0
7.4        4
10.3       8
12.7       12
140.0      0
161.3      4
142.5      8

方法一:使用tidyverse工具包

tidyverse的函数可以更简洁地完成字符串拆分和提取操作:

library(tidyverse)

# 转换并整理数据
result <- tibble(ST = ST) %>%
  # 按"  /  "拆分每个字符串为独立行
  separate_rows(ST, sep = "  /  ") %>%
  # 提取数值和周数
  mutate(
    STvalue = as.numeric(str_extract(ST, "^\\d+\\.\\d+")),
    WEEK = as.integer(str_extract(ST, "(?<=wk)\\d+"))
  ) %>%
  # 保留需要的列
  select(STvalue, WEEK)

# 输出结果(隐藏行名)
print(result, row.names = FALSE)

方法二:基础R实现

如果不想依赖第三方包,用基础R函数也可以实现:

# 拆分所有字符串为单个条目
split_ST <- unlist(strsplit(ST, "  /  "))

# 提取数值部分:移除括号及内部内容
STvalue <- as.numeric(sub(" \\(wk\\d+\\)", "", split_ST))
# 提取周数部分:捕获wk后的数字
WEEK <- as.integer(sub(".*wk(\\d+)\\)", "\\1", split_ST))

# 构建数据框
result <- data.frame(STvalue, WEEK)

# 输出结果(隐藏行名)
print(result, row.names = FALSE)

两种方法最终都会得到你需要的数据集格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:23:23