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

R语言数据处理需求:每行后加两行空行并按2001-2003排序year列

数据框行后添加两行空行并按指定year顺序排列的解决方案

需求说明

需要完成两个操作:

  • 在数据框的每一行后添加两行空行(空行对应var1和var2为NA)
  • 将year列按照2001、2002、2003的固定顺序重新排列,每一组三行对应这个顺序

初始数据

df <- data.frame(var1 = c(1,2,3,4,5,6,7,8,9),
                 var2 = c('a','b','c','d','e','f','g','h','i'),
                 year = c(2001, 2003, 2003, 2001, 2002, 2003,2002,2003,2001))

解决方案代码

可以使用dplyr和tidyr包高效实现需求,步骤如下:

  1. 加载所需工具包
library(dplyr)
library(tidyr)
  1. 处理数据:对每一行原数据生成三行,按指定year顺序填充,非原行的var1和var2设为NA
df2 <- df %>%
  rowwise() %>%
  # 为每一行扩展出year序列为2001、2002、2003的三行
  expand_grid(year_seq = c(2001, 2002, 2003)) %>%
  # 仅保留原year对应的行的var1和var2值,其余设为NA
  mutate(
    var1 = ifelse(year_seq == year, var1, NA),
    var2 = ifelse(year_seq == year, var2, NA)
  ) %>%
  ungroup() %>%
  # 调整列顺序,将year_seq重命名为year
  select(var1, var2, year = year_seq)

结果验证

生成的df2与需求中的期望输出结构一致:每一行原数据后跟随两行NA行,year列严格按照2001、2002、2003的顺序循环排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:18:31