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

移除DataFrame重复行保留首行:县域高管面板数据处理需求

问题:清理县域高管面板数据,保留「县域-年份」首次出现的记录

我正在处理一份县域高管的DataFrame,计划开展以「县域-年份」为分析单元的面板研究。但部分年份存在多位县域高管任职的情况,需要移除这类重复行,且始终保留首次出现的行。

初始数据

df <- data.frame(year= c(2000, 2001, 2001, 2002, 2000, 2001, 2002, 2002, 2002),
                  executive.name= c("Johnson", "Smith", "Peters", "Alleghany", "Roberts", "Clarke", "Tollson", "Brown", "Taschen"),
                  district= c(1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002))

期望输出

df.neat <- data.frame(year= c(2000, 2001, 2002, 2000, 2001, 2002),
                  executive.name= c("Johnson", "Smith", "Alleghany", "Roberts", "Clarke", "Tollson"),
                  district= rep(c(1001, 1002), each=3))

解决方案

方法1:Base R实现

利用duplicated()函数,基于district和year的组合判断重复行,筛选出非重复的记录(即每组首次出现的行):

df.neat <- df[!duplicated(df[c("district", "year")]), ]

方法2:dplyr包实现

如果习惯tidyverse风格,可通过分组取首行或distinct()函数完成:

library(dplyr)

# 分组后取每组第一行
df.neat <- df %>%
  group_by(district, year) %>%
  slice(1) %>%
  ungroup()

# 或用distinct直接去重,保留首次出现的完整行
df.neat <- df %>%
  distinct(district, year, .keep_all = TRUE)

以上两种方法均能得到符合预期的清理后数据,精准保留每个「县域-年份」组合的第一条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:05:10