我有一个像这样的数据框:
data.frame(matrix(c(11:13, 21:23, 11:13, 11:13, 31:33, 41:43, 31:33), byrow = TRUE, ncol = 3))
现在我想知道哪一行是哪一行的重复项,返回具有重复行号最低的索引向量。如果一行不是前一行的重复项,则它应该获取下一个可用索引。
在此示例中,输出应为:
c(1, 2, 1, 1, 3, 4, 3)
我可以通过循环所有行对来实现这一点,但必须有一种有效的方法来做到这一点。
很遗憾,duplicated
只显示哪些行是重复的,但不显示它们精确重复的哪一行。有什么功能可以帮助这里吗?
另一种选择是使用grouping
在较新版本的 R 中可以使用该函数。
获取相同值彼此相邻放置的行的顺序:
grs = do.call(grouping, dat)
并操纵结果的“属性”以获得想要的结果:
ends = attr(grs, "ends")
rep(seq_along(ends), c(ends[1], diff(ends)))[order(grs)]
#[1] 1 2 1 1 3 4 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)