Ash - 3 months ago 6

R Question

I would like to delete rows of data in a dataframe if the values in a column (in this case a participant identification number) fall within a certain range e.g. 61701 to 61721 & 61901 to 61929.

I know how to subset data based on a threshold e.g.

`datasetnew = dataset[dataset$X<=100,]`

But not sure how to subset and remove the rows using a range of numbers. Not sure subset is what I need.

Many thanks.

Answer

Or a more straight forward implementation will be just negate these rows using `!`

```
dataset[with(dataset, !((X >= 61701 & X <= 61721) | (X >= 61901 & X <= 61929))), ]
```

Or

```
dataset[with(dataset, !((X %in% 61701:61721) | (X %in% 61901:61929))), ]
```

For a big data set you can use `data.table`

s `%between%`

function

```
library(data.table)
setDT(dataset)[!(X %between% c(61701, 61721) | X %between% c(61901, 61929))]
```

Source (Stackoverflow)

Comments