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

如何在R中按字符标识拆分长格式数据框

拆分堆叠长格式数据为独立数据框

问题背景

现有长格式数据由多个结构相似的数据框堆叠而成,需以Buy curve和Sell curve作为数据块的起始标识,将原数据拆分为独立的数据框,同时保留列名用于后续转宽格式处理。原代码仅能提取Sell curve对应的数据块,无法保留Buy curve部分。

示例数据

Columns <- c("Buy curve", "Price value", "Volume value", "Price value", "Volume value","Price value", "Volume value",
             "Sell curve", "Price value", "Volume value", "Price value", "Volume value","Price value", "Volume value")
Values <- c(NA, 0, 10, 3, 4, 5, 0, NA, 0, 0, 1, 2, 4, 8)

df1 <- data.frame(Columns, Values)

原数据结构:

Columns Values
1     Buy curve     NA
2   Price value      0
3  Volume value     10
4   Price value      3
5  Volume value      4
6   Price value      5
7  Volume value      0
8    Sell curve     NA
9   Price value      0
10 Volume value      0
11  Price value      1
12 Volume value      2
13  Price value      4
14 Volume value      8

解决方案

使用dplyr和tidyr工具包实现自动识别标识、拆分数据块,并直接转换为宽格式:

library(dplyr)
library(tidyr)

# 1. 为每个数据块生成唯一分组ID
df_grouped <- df1 %>%
  mutate(group_id = cumsum(Columns %in% c("Buy curve", "Sell curve")))

# 2. 拆分数据块并处理为宽格式
split_dfs <- split(df_grouped, df_grouped$group_id) %>%
  lapply(function(block) {
    # 获取当前数据块的名称(即起始标识)
    block_name <- block$Columns[is.na(block$Values)]
    # 移除起始标识行
    cleaned_block <- block %>% filter(!Columns %in% c("Buy curve", "Sell curve"))
    # 为每组Price/Volume添加行序号,用于转宽格式
    numbered_block <- cleaned_block %>%
      group_by(Columns) %>%
      mutate(row_num = row_number()) %>%
      ungroup()
    # 转换为宽格式并移除辅助列
    wide_block <- numbered_block %>%
      pivot_wider(names_from = Columns, values_from = Values) %>%
      select(-row_num)
    # 将处理好的数据框存入全局环境,命名为标识名称
    assign(block_name, wide_block, envir = .GlobalEnv)
    return(wide_block)
  })

结果说明

执行后,全局环境中会生成两个独立的数据框:

  • Buy curve:对应原数据中第一块的宽格式数据
Price value Volume value
1           0           10
2           3            4
3           5            0
  • Sell curve:对应原数据中第二块的宽格式数据
Price value Volume value
1           0            0
2           1            2
3           4            8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:01:41