在r中找到匹配的连续行

时间:2019-05-07 20:55:50

标签: r rows matching

此示例是否可以使用单行解决方案?

df = data.frame('First' = c('T','T','V','V','A','E'),'Last' = c(rep('Ng',3),'Smith','Wolf','Wolf'))
matches = (df$First[-1] == df$First)
which(matches == 'TRUE')
# [1] 1 3

我想要indeses,但宁愿不使用临时变量。

1 个答案:

答案 0 :(得分:0)

也许您可以结合使用rleid中的data.table函数和diff,如下所示:

which(diff(rleid(df$First)) == 0)
[1] 1 3

您可能会争辩说df$First中的2nd元素和4th元素与先前的值(而不是1st和3rd)匹配,因此,which(c(F, diff(rleid(df$First)) == 0))可能更合适,它产生:{{ 1}}