與開始和結(jié)束位置重疊連接考慮以下幾點(diǎn)data.tableS.第一個區(qū)域定義了每組“x”的起始和結(jié)束位置的一組區(qū)域:library(data.table)d1 <- data.table(x = letters[1:5], start = c(1,5,19,30, 7), end = c(3,11,22,39,25))setkey(d1, x, start)
# x start end# 1: a 1 3# 2: b 5 11# 3: c 19 22# 4: d 30 39# 5: e 7 25第二個數(shù)據(jù)集具有相同的分組變量‘x’,并在每個組中定位‘pos’:d2 <- data.table(x = letters[c(1,1,2,2,3:5)], pos = c(2,3,3,12,20,52,10))setkey(d2, x, pos)# x pos# 1: a 2# 2: a 3
# 3: b 3# 4: b 12# 5: c 20# 6: d 52# 7: e 10最后,我想提取‘d2’中的行,其中‘pos’在每個組中都屬于由‘start’和‘end’定義的范圍內(nèi)。x..期望的結(jié)果是# x pos start end# 1: a 2 1 3# 2: a 3 1 3# 3: c 20 19 22# 4: e 10 7 25任何組的開始/結(jié)束位置。x永遠(yuǎn)不會重疊,但在任何地區(qū)都可能存在價值差距?,F(xiàn)在,我認(rèn)為我應(yīng)該使用滾動連接。據(jù)我所知,我不能在聯(lián)接中使用“end”列。我試過d1[d2, roll = TRUE, nomatch = 0, mult = "all"][start <= end]得到# x start end# 1: a 2 3# 2: a 3 3# 3: c 20 22# 4: e 10 25這是我想要的正確的行集;但是,“pos”變成了“start”,而原始的“start”已經(jīng)丟失了。是否有一種方法可以保留所有列的滾動連接,以便我可以報告“開始”,“pos”,“結(jié)束”的要求嗎?
- 3 回答
- 0 關(guān)注
- 682 瀏覽
添加回答
舉報
0/150
提交
取消