2016-11-27 63 views
2

我的新R.我有像以下的數據幀:查找連續行之間的差組內中的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

我得到'100-34 = 66',而不是78 – akrun

+1

請詳細說明你如何去從輸入到輸出的嘗試。 – Heroka

+0

我想計算組內條目之間的差距的開始和結束。對於例如在「組」A中,前兩項之間的間隔的開始和結束是78和99.類似地,第二和第三項之間的間隔的開始和結束是141和184,因此如此。總之,我想找到第一項(77)的「結束」和下一項(99)開始之間的差距。 – Chudar

回答

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 
+0

@Chudar更新了帖子。請檢查這是否有幫助 – akrun