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

如何从R数据框字符串列提取数值范围并展开对应行

解决方案

步骤1:提取Miles列中的数字与连字符

使用stringr包的str_extract函数,通过正则表达式\\d+(-\\d+)?匹配单个数字或数字范围(仅保留数字和连字符):

library(stringr)
library(tidyr)
library(dplyr)

# 模拟数据集
Meters <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
Miles <- c("zyx 1-2.jpg-Distance[zyx 1-2.jpg]", "zyx 15-19.jpg-Distance[zyx 15-19.jpg]", "zyx 19-23.jpg-Distance[zyx 19-23.jpg]", "zyx 24.jpg-Distance[zyx 24.jpg]", "zyx 25-28.jpg-Distance[zyx 25-28.jpg]", "zyx 29.jpg-Distance[zyx 29.jpg]", "zyx 3.jpg-Distance[zyx 3.jpg]", "zyx 30-32.jpg-Distance[zyx 30-32.jpg]", "zyx 33-36.jpg-Distance[zyx 33-36.jpg]", "zyx 37-43.jpg-Distance[zyx 37-43.jpg]", "zyx 44-52.jpg-Distance[zyx 44-52.jpg]", "zyx 53-54.jpg-Distance[zyx 53-54.jpg]", "zyx 55.jpg-Distance[zyx 55.jpg]", "zyx 56-64.jpg-Distance[zyx 56-64.jpg]", "zyx 6.jpg-Distance[zyx 6.jpg]", "zyx 65-76.jpg-Distance[zyx 65-76.jpg]", "zyx 7-14.jpg-Distance[zyx 7-14.jpg]", "zyx 77-78.jpg-Distance[zyx 77-78.jpg]", "zyx 79-83.jpg-Distance[zyx 79-83.jpg]", "zyx1_ 4-5.jpg-Distance[zyx1_ 4-5.jpg]", "zyx2_ 4-5.jpg-Distance[zyx2_ 4-5.jpg]")
Wheels <-c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1)
Empty <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Trip <- data.frame(Meters, Miles, Wheels, Empty)

# 提取数字和连字符
Trip <- Trip %>%
  mutate(miles_range = str_extract(Miles, "\\d+(-\\d+)?"))

步骤2:展开数值范围为单独行

拆分提取出的范围,生成连续数值序列,再通过unnest展开为多行,同时保留其他列的原始值:

# 拆分范围并生成序列
Trip_expanded <- Trip %>%
  # 拆分起始和结束数字,无范围的行自动填充结束值为起始值
  separate(miles_range, into = c("start", "end"), sep = "-", fill = "right") %>%
  mutate(
    end = ifelse(is.na(end), start, end),
    start = as.integer(start),
    end = as.integer(end),
    # 生成从start到end的连续数值序列
    miles_value = map2(start, end, seq)
  ) %>%
  # 将序列展开为单独行
  unnest(miles_value) %>%
  # 移除中间辅助列
  select(-start, -end)

处理完成后,Trip_expanded即为目标结果:原数据中的每个数值范围会被拆分为单独行(如15-19会生成5行,对应15、16、17、18、19),且Meters、Wheels、Empty等列的对应值会在各行中保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:33:18