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

如何在R语言中拆分数据框带数字范围的行并展开

解决数据框中整数范围行的拆分展开问题

输入数据框:

df <- data.frame(
  A = c("1", "2", "3-5", "6"),
  B1 = c("a", "b", "c", "d")
)

需求是将列A中类似3-5的整数范围条目拆分为连续整数单独成行,同时保留对应行的其他列内容。之前使用separate_longer_delim只能拆分出范围的首尾值,无法填充中间缺失的行。

可以通过以下步骤实现:

  • 先将范围格式的条目拆分为起始和结束数值列
  • 统一处理非范围条目(起始和结束值相同)
  • 基于起始到结束的数值生成完整序列,同时复制其他列内容

完整代码:

library(tidyverse)

df %>%
  # 将A列拆分为起始(start)和结束(end)列,非范围行的end列补NA
  separate_wider_delim(A, delim = "-", names = c("start", "end"), fill = "right") %>%
  # 非范围行的end值替换为start,同时将start和end转为整数
  mutate(
    end = ifelse(is.na(end), start, end),
    across(c(start, end), as.integer)
  ) %>%
  # 按每行的起始结束生成完整序列,保留B1列
  reframe(
    A = as.character(seq(start, end)),
    B1 = B1,
    .by = everything()
  )

运行后得到期望输出:

A B1
1   1  a
2   2  b
3   3  c
4   4  c
5   5  c
6   6  d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:15:02