R:按值选择行并始终包含上一行

标签 r dataframe conditional-statements subset

我正在尝试将数据框子集到某个列值为“13”的所有行,但我希望也包含“13”行之前的所有行,无论该列中的值是什么.

当某行既位于特定列中包含“13”的行之前,又具有值“13”本身时,我不希望该行被包含两次。

这是一个示例数据框和解决方案,其中条件(将行子集为时间 = 13 和 (time=13)-1 的行,不重复)

ID  speed   dist    time
A   4        12     4
B   7        10     8
C   7        18     13
C   8        4      5
A   5        6      13
D   6        2      13
E   7        2      9

Becomes

ID  speed   dist    time
B   7       10      8
C   7       18      13
C   8       4       5
A   5       6       13
D   6       2       13

最佳答案

df <- read.table(text = '
ID  speed   dist    time
A   4        12     4
B   7        10     8
C   7        18     13
C   8        4      5
A   5        6      13
D   6        2      13
E   7        2      9
', header = TRUE)

library(dplyr, warn.conflicts = FALSE)
#> Warning: package 'dplyr' was built under R version 4.1.2

df %>% 
  filter(time == 13 | lead(time == 13))
#>   ID speed dist time
#> 1  B     7   10    8
#> 2  C     7   18   13
#> 3  C     8    4    5
#> 4  A     5    6   13
#> 5  D     6    2   13

reprex package 于 2022 年 7 月 19 日创建(v2.0.1)

关于R:按值选择行并始终包含上一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73040009/

相关文章:

r - 如何更改ggplot中的图例标题

r - 找到向量中的最小值但没有 0

python - iloc 和 loc 有何不同?

python - 如何在不知道索引的情况下查询 pandas 数据帧的特定值

python - 在 python 三元中使用 continue?

java - 如何无限地生成随机数,直到它符合Java中的条件?

java - if-condition 中的编译错误

mysql - 如何在 R 中彻底断开与 MySQL 的连接?

r - 在rhive.env()上出现错误:无法连接到x.x.x.x上的Rserver

python - 如何使用 .loc 和 MultiIndex 获取 Pandas DataFrame 中的值?