Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing rows that do not match a certain condition in r

I have a dataframe with multiple columns and I would like to remove rows that do not meet a certain condition. I would like to only keep the rows that have a -1 followed by a 1 in the dataframe in one of the columns.

Example data.frame

    column a   column b
1     1          1
2     3         -1
3     8          1
4     10        -1
5     12         1
6     15         1

Example output:

    column a   column b
1     3         -1
2     8          1
3     10        -1
4     12         1

example dataframe example output

like image 595
confusedindividual Avatar asked Nov 28 '25 04:11

confusedindividual


1 Answers

With dplyr you can use:

library(dplyr)
your_data %>%
  filter(
    (`column b` == -1 & lead(`column b`) == 1) |
    (`column b` == 1 & lag(`column b`) == -1)
  )
#   column a column b
# 2        3       -1
# 3        8        1
# 4       10       -1
# 5       12        1

Using this input data:

your_data = read.table(text = '    "column a"   "column b"
1     1          1
2     3         -1
3     8          1
4     10        -1
5     12         1
6     15         1', header = T, check.names = FALSE)
like image 151
Gregor Thomas Avatar answered Nov 29 '25 19:11

Gregor Thomas



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!