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

R语言按city分组如何保留多观测组的第二条观测行?

需求实现方案

核心逻辑:你已经提前按city对数据集完成排序,因此只需按city分组后,每组取行下标为min(2, 组内观测数)的行即可,刚好满足「组大小为1保留唯一行,组大小≥2保留第2行」的要求。

dplyr 实现(最常用简洁方案)

library(dplyr)

result <- mydata %>%
  group_by(city) %>%
  slice(min(2, n())) %>%
  ungroup()

基础R实现(无需加载第三方包)

# 写法1:利用ave生成组内标识筛选
group_seq <- ave(1:nrow(mydata), mydata$city, FUN = seq_along)
group_size <- ave(1:nrow(mydata), mydata$city, FUN = length)
result <- mydata[group_seq == pmin(2, group_size), ]

# 写法2:分组拆分后合并
result <- do.call(rbind, by(mydata, mydata$city, function(df) df[min(2, nrow(df)), ]))

data.table 实现(适合大数据量高性能场景)

library(data.table)
setDT(mydata)

result <- mydata[, .SD[min(2, .N)], by = city]

以上三种方案运行后得到的结果都和你给出的期望输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:45:02