筛选出R中的顺序值列表?

时间:2020-07-21 00:36:33

标签: r

我有一个小标题,称为zero_sum_ab。每个变量都用变量ab_id标识。我正在尝试隔离非顺序值...例如,请参见下面的代码段:

see screenshot of tibble w/ Highlighted values

在图中,您可以看到ab_id大多是非顺序的。整个数据中散布着顺序值,例如突出显示的值:2015000110和2015000111。

我想做的是从整个数据集中的这些顺序对组中过滤出 second 值。我的想法是将第二个值隔离在自己的列表中,并使用它来过滤所需的值的整个数据集,但是正在努力寻找一种方法来实现此目的。

2 个答案:

答案 0 :(得分:2)

如果要保留顺序记录,请尝试

library(dplyr)
zero_sum_ab %>% filter((ab_id - lag(ab_id)) == 1)

如果要丢弃顺序记录,请尝试

library(dplyr)
zero_sum_ab %>% filter(!(ab_id - lag(ab_id)) == 1)

答案 1 :(得分:1)

另一个选项,类似于CPak的选项:

nginx-proxy

类似地,在dat <- data.frame(ab_id = c(2015000099, 2015000103, 2015000106, 2015000110, 2015000111, 2015000112, 2015000116, 2015000119)) dat # ab_id # 1 2015000099 # 2 2015000103 # 3 2015000106 # 4 2015000110 # 5 2015000111 # 6 2015000112 # 7 2015000116 # 8 2015000119 dat[ c(TRUE, diff(dat$ab_id) != 1L),, drop = FALSE] # ab_id # 1 2015000099 # 2 2015000103 # 3 2015000106 # 4 2015000110 # 7 2015000116 # 8 2015000119 中:

dplyr

({library(dplyr) dat %>% filter(c(TRUE, diff(ab_id) != 1L)) # ab_id # 1 2015000099 # 2 2015000103 # 3 2015000106 # 4 2015000110 # 5 2015000116 # 6 2015000119 只是diff的base-R简化)