首页 > 解决方案 > 根据R中的匹配条件过滤

问题描述

我正在尝试执行一个命令,以仅保留 Y 列中“ID”与 X 列中相同的行。换句话说,如果 Y 列中的“ID”与列中的 ID 匹配,则保留该行X。

编辑:这是接近但不完全存在的代码。我需要的是在 Y 列中添加一个条件。因此,当列 Y = '34' 时,它应该保留 X 列中的 ID 等于 Y 列中的 ID 的行。

data %>%
  filter(ID %in% X == ID %in% Y)

标签: rfilterdplyr

解决方案


您可以使用 join 或只是执行以下操作:

df <- data.frame(x = 1:13, y = c(1:5,7:14))
    x  y
1   1  1
2   2  2
3   3  3
4   4  4
5   5  5
6   6  7
7   7  8
8   8  9
9   9 10
10 10 11
11 11 12
12 12 13
13 13 14

rows_to_select <- which(df$x==df$y,TRUE)

df[rows_to_select,]
  x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

推荐阅读