找出R中组内连续行之间的差异

时间:2016-11-27 15:53:57

标签: r dataframe

我是R.的新手。我有一个如下数据框:

group start end
    A  34   77
    A  100  140
    A  185  246 
    B  60    98
    B  146   186 
    C  250   315
    C  411   489
    C  510   550
    C  601   662

我想找到连续行之间的区别如下:

group start end 
    A  78  99
    A  141 184
    B  99  145
    C  316 410
    C  490 509
    C  551 600

任何小小的帮助都将受到高度赞赏。提前致谢

1 个答案:

答案 0 :(得分:2)

我们可以尝试data.table

library(data.table)
setDT(df1)[,.(start = (start+end - start +1)[-.N], 
           end = (end +shift(start, type='lead')-end-1)[-.N] ) , by = group]  
#   group start end
#1:     A    78  99
#2:     A   141 184
#3:     B    99 145
#4:     C   316 410
#5:     C   490 509
#6:     C   551 600