我正在尝试将数据框子集到某个列值为“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/