我有一个data.frame
,其中每个id
映射到多个不连续的线性区间,这些区间不重叠,并按升序排序:
df <- data.frame(id = c(rep("id1",3),rep("id2",4)),
start = c(101,220,307,550,658,742,855),
end = c(154,246,326,625,712,811,944),
stringsAsFactors = F)
我想添加新的“start”和“end”列,这些列将累加间隔宽度并显示累积的起始和结束坐标。
因此,对于上面的示例“df”,这些新的“start”和“end”列(“cum.start”,“cum.end”)将是:
df$cum.start <- c(1,55,82,1,77,132,202)
df$cum.end <- c(54,81,101,76,131,201,291)
有没有使用dplyr
的方法来实现这个?
df%>%按id分组%>% mutate(newend = cumsum(end-start + 1),newstart = lag(newend + 1,默认值= 1))
- thelatemail