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

如何在R语言中获取数据框列新值首次出现的行号?

获取数据框列中每个新值首次出现的行号

给定如下数据框:

dat <- data.frame(Var1 = c(1,1,1,1,2,2,3,3,3,3,3,3,4,4,4,5,5,5,5))

查看数据:

> dat
   Var1
1     1
2     1
3     1
4     1
5     2
6     2
7     3
8     3
9     3
10    3
11    3
12    3
13    4
14    4
15    4
16    5
17    5
18    5
19    5

需要获取列Var1中每个新值首次出现的行号,预期结果为:

c(1, 5, 7, 13, 16)

基础R实现方案

方法1:利用duplicated()函数

duplicated()返回逻辑向量标记重复元素,取反后提取对应行号:

which(!duplicated(dat$Var1))
# 输出:[1]  1  5  7 13 16

方法2:结合unique()和match()函数

先获取唯一值,再用match()匹配每个唯一值的首次出现位置:

match(unique(dat$Var1), dat$Var1)
# 输出:[1]  1  5  7 13 16

极简包函数方案

dplyr包实现

library(dplyr)

dat %>%
  group_by(Var1) %>%
  filter(row_number() == 1) %>%
  pull(row_number())
# 输出:[1]  1  5  7 13 16

data.table包实现

library(data.table)

setDT(dat)[, .I[1], by = Var1]$V1
# 输出:[1]  1  5  7 13 16

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:02:34