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

如何转换或移除DataFrame中超出条数限制的重复个体行

解决方案

优先方案:滑动窗口拆分多条目个体

针对需求,用dplyr结合purrr实现滑动窗口式拆分,生成每个5行的连续子组并重命名Name列:

library(dplyr)
library(purrr)

# 定义分组处理函数
process_group <- function(df) {
  row_count <- nrow(df)
  if (row_count <= 5) {
    # 条目数≤5的分组直接返回
    return(df)
  } else {
    # 计算滑动窗口组数:总条目数-5+1
    group_count <- row_count - 5 + 1
    # 生成每个窗口的子数据框并重命名
    map_dfr(1:group_count, function(idx) {
      sub_df <- df[idx:(idx+4), ]
      sub_df$Name <- paste0(sub_df$Name[1], idx)
      sub_df
    })
  }
}

# 按Name分组处理数据
final_result <- data2 %>%
  group_by(Name) %>%
  group_modify(process_group) %>%
  ungroup()

# 查看输出
print(final_result)

这段代码的作用:

  • 对每个Name分组单独处理
  • 条目数≤5的分组(如Benny、Mylo)直接保留原数据
  • 条目数>5的分组(如Peter)生成连续的5行滑动窗口子组,Name后追加组号,正好生成3组,完全匹配你期望的输出格式

退而求其次:保留前5条数据

若不需要拆分,仅保留每个个体的前5条数据,代码更简洁:

library(dplyr)

simple_result <- data2 %>%
  group_by(Name) %>%
  slice_head(n = 5) %>%
  ungroup()

print(simple_result)

补充说明

  • 两个方案都会保留原DataFrame的所有列(包括你省略的其他列)
  • 后续可自行处理Mylo的条目,比如用filter(Name != "Mylo Thony")移除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:25:18