查找哪一行重复 data.frame 中的哪一行

Pet*_*eet 2 r dataframe

我有一个像这样的数据框:

data.frame(matrix(c(11:13, 21:23, 11:13, 11:13, 31:33, 41:43, 31:33), byrow = TRUE, ncol = 3))
Run Code Online (Sandbox Code Playgroud)

现在我想知道哪一行是哪一行的重复项,返回具有重复行号最低的索引向量。如果一行不是前一行的重复项,则它应该获取下一个可用索引。在此示例中,输出应为:

c(1, 2, 1, 1, 3, 4, 3)
Run Code Online (Sandbox Code Playgroud)

我可以通过循环所有行对来实现这一点,但必须有一种有效的方法来做到这一点。

不幸的是,duplicated只显示哪些行是重复的,但不显示它们到底重复的是哪一行。有什么功能可以帮助这里吗?

ale*_*laz 5

grouping在较新版本的 R 中使用该函数的另一种选择。

获取相同值彼此相邻放置的行的顺序:

grs = do.call(grouping, dat)
Run Code Online (Sandbox Code Playgroud)

并操纵结果的“属性”以获得想要的结果:

ends = attr(grs, "ends")
rep(seq_along(ends), c(ends[1], diff(ends)))[order(grs)]
#[1] 1 2 1 1 3 4 3
Run Code Online (Sandbox Code Playgroud)