首页 > 解决方案 > 从R中的范围数据框中获取距离在某些值内的行

问题描述

如果我有一个范围的数据框:

start end
12    18
22    30
35    40
49    70
81    90
102   110
120   124

如何获得距离在 R 中某个下限和上限阈值内的行(即下一行的开始 - 前一行的结尾在该阈值内)?

假设,我想获得距离在 5-10 之间的行,那么我想获得:

start.1 end.1 start.2 end.2
22      30    35      40
35      40    49      70
102     110   120     124

在这里,start.2 - end.1 始终介于 5-10 之间。

标签: rdataframe

解决方案


library(dplyr)

df <- data.frame(
  start = c(12,22,35,49,81,102,120),
  end = c(18,30,40,70,90,110,124)
)

df %>%
  mutate(difference = start - lag(end),
         start.1 = lag(start),
         end.1 = lag(end),
         start.2 = start,
         end.2 = end) %>%
  filter(difference >= 5 & difference <= 10) %>%
  select(-c(difference, start, end))

推荐阅读