簡體   English   中英

過濾以刪除特定列中特定值之前的所有行,而該特定值出現多次

[英]Filter to remove all rows before a particular value in a specific column, while this particular value occurs several time

我想過濾以刪除特定列中特定值之前的所有行。 例如,在下面的數據框中,我想刪除 x 列中出現的“1”之前的所有行,因為出現“1”。 請注意,“1”的值重復了很多次,我想刪除 x 列中“1”之前的“NA”行,關於 a 列。 謝謝

a   b   x
1   1   NA
1   2   NA
1   3   1
1   4   0
1   5   0
1   6   NA
1   7   NA
2   1   NA
2   2   NA
2   3   1
2   4   NA
2   5   0
2   6   0
2   7   NA
3   1   NA
3   2   NA
3   3   NA
3   4   NA
3   5   1
3   6   0
3   7   NA

所需的 output 將是這樣的:

a   b   x
1   3   1
1   4   0
1   5   0
1   6   NA
1   7   NA
2   3   1
2   4   NA
2   5   0
2   6   0
2   7   NA
3   5   1
3   6   0
3   7   NA

這能解決你的問題嗎?

library(tidyverse)

dat <- read.table(text = "a   b   x
1   1   NA
1   2   NA
1   3   1
1   4   0
1   5   0
1   6   NA
1   7   NA
2   1   NA
2   2   NA
2   3   1
2   4   NA
2   5   0
2   6   0
2   7   NA
3   1   NA
3   2   NA
3   3   NA
3   4   NA
3   5   1
3   6   0
3   7   NA", header = TRUE)

dat %>%
  group_by(a) %>%
  filter(cummax(!is.na(x)) == 1)
#> # A tibble: 13 × 3
#> # Groups:   a [3]
#>        a     b     x
#>    <int> <int> <int>
#>  1     1     3     1
#>  2     1     4     0
#>  3     1     5     0
#>  4     1     6    NA
#>  5     1     7    NA
#>  6     2     3     1
#>  7     2     4    NA
#>  8     2     5     0
#>  9     2     6     0
#> 10     2     7    NA
#> 11     3     5     1
#> 12     3     6     0
#> 13     3     7    NA

reprex package (v2.0.1) 於 2021 年 12 月 7 日創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM