我有一個帶有開始和結束索引(已排序)的 data.frame,例如:
df <- data.frame(start.idx = c(1,2,5),
end.idx = c(2,3,6))
我正在尋找一個函式來合并行i和i-1if start.idx[i] == end.idx[i-1],這樣新行的start.idxwillstart.idx[i-1]和end.idxwill be end.idx[i]。
對于上面的示例,生成的新(合并)data.frame 將是:
res.df <- data.frame(start.idx = c(1,5),
end.idx = c(3,6))
uj5u.com熱心網友回復:
如果存在重疊,您可以創建包含同一組中的行的組,然后分別為開始和結束選擇first和last值。
library(dplyr)
df %>%
arrange(start.idx) %>%
group_by(group = cumsum(start.idx > lag(end.idx, default = 0))) %>%
summarise(start.idx = first(start.idx),
end.idx = last(end.idx)) %>%
select(-group)
# start.idx end.idx
# <dbl> <dbl>
#1 1 3
#2 5 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386229.html
上一篇:如何將資料附加到資料框中
