the*_*ail 3 r sequence match dataframe
拿这个数据集......
test <- data.frame(
t1=c(2,3,5,6,7,10,10),
t2=c(3,4,6,7,8,11,12),
id=1:7
)
Run Code Online (Sandbox Code Playgroud)
......看起来像这样.为了澄清,每一行都是先前确定的两个必须保持绑定在一起的案例的链接.
t1 t2 id
1 2 3 1
2 3 4 2
3 5 6 3
4 6 7 4
5 7 8 5
6 10 11 6
7 10 12 7
Run Code Online (Sandbox Code Playgroud)
我希望递归地识别基于t2 == t1的连续序列,以便链接是:
link1 - 2-3,3-4
link2 - 5-6,6-7,7-8
link3 - 10-11
link4 - 10-12
Run Code Online (Sandbox Code Playgroud)
我正在寻找的最终结果是:
t1 t2 id matchid
1 2 3 1 1
2 3 4 2 1
3 5 6 3 2
4 6 7 4 2
5 7 8 5 2
6 10 11 6 3
7 10 12 7 4
Run Code Online (Sandbox Code Playgroud)
我已经尝试过match(test$t2,test$t1)获取初始链接,但现在我不知道如何继续链接过程.我的想法继续回到使用循环,这听起来像一个可怕的方式去.
这是一种方法:
test$matchid <- c(1, 1 + cumsum(tail(test$t1, -1) != head(test$t2, -1)))
Run Code Online (Sandbox Code Playgroud)