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

R语言实现间隔2行插入1行数据合并两个数据框(保留行序)

R数据框按固定间隔插入行实现方案

不需要依赖分组合并操作,直接按位置拼接即可100%保留df原有行顺序,以下提供两种可直接运行的实现:

基础R无依赖实现

先统一两个数据框的列名避免合并报错,再将df按每2行拆分为独立块,和df2的行逐块交替拼接即可:

# 对齐列名
colnames(df) <- "x"

# 拆分df为每2行一个块
df_blocks <- split(df, f = rep(1:10, each = 2))
# 逐块拼接df片段与df2的对应行
df3 <- do.call(
  rbind,
  mapply(
    FUN = function(block, insert_row) rbind(block, insert_row),
    df_blocks,
    split(df2, 1:10),
    SIMPLIFY = FALSE
  )
)
# 清理冗余行名
rownames(df3) <- NULL

运行结果和你给出的目标df3结构完全一致,全程未对df做任何排序操作,原始行顺序不会发生任何变动。

tidyverse风格实现

如果日常使用tidyverse生态,可以用以下代码实现相同效果:

library(dplyr)
library(purrr)

df3 <- df |>
  as.data.frame() |>
  rename(x = V1) |>
  mutate(grp = rep(1:10, each = 2)) |>
  group_split(grp, .keep = FALSE) |>
  map2_dfr(.y = split(df2, 1:10), .f = bind_rows)

之前分组合并方案打乱顺序的核心原因:join/merge类操作默认会对匹配键做排序,无法保证原始行序,按固定位置拆分拼接的思路可以完全规避这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.13 16:15:54