删除行匹配向量

Remove rows matching vector

我有一个包含 12 列和 4225 行的数据框。

其中一列是 id 并包含数字。

我想根据向量删除一些行。

id_to_remove <- c(2721,3893, 3904, 3905, 3907, 3908, 3909, 3910, 3912)

我尝试了很多解决方案,但我无法使其正常工作,例如

data <- data[!data$id == 2721| 3893|3904| 3905| 3907| 3908| 3909| 3910| 3912]

有什么想法吗?

也许试试这个:

#Code
data <- data[!data$id %in% id_to_remove,]

这是使用 dplyr 包的替代解决方案。使用 filter%in% 根据 id_to_remove 向量中的值对数据进行子集化。

library(tibble)
library(dplyr)


id_to_remove <- c(2721, 3893, 3904, 3905, 3907, 3908, 3909, 3910, 3912)

data <- tibble(
  id = c(2721, 3893, 3904, 3905, 3907, 3908, 3909, 3910, 3912, 1234, 4567, 1234, 6567, 8765, 5678),
  foo = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
)

data %>% 
  filter(!(id %in% id_to_remove))

#> # A tibble: 6 x 2
#>      id   foo
#>   <dbl> <dbl>
#> 1  1234    10
#> 2  4567    11
#> 3  1234    12
#> 4  6567    13
#> 5  8765    14
#> 6  5678    15

reprex package (v0.3.0)

于 2020-11-19 创建