使用dplyr返回匹配的值

使用dplyr返回匹配的值,r,dplyr,R,Dplyr,我见过很多关于基于多个条件返回行的线程,但我很难理解最好的方法是dplyr。我有一个大的二元数据集和下面的模拟数据。我想返回每个country1值的行,在这种情况下,x=1和y值匹配10,而不是11 country1 <- c("a", "a", "a", "a") country2 <- c("b", "c", "b", "d&quo

我见过很多关于基于多个条件返回行的线程,但我很难理解最好的方法是dplyr。我有一个大的二元数据集和下面的模拟数据。我想返回每个country1值的行,在这种情况下,x=1和y值匹配10,而不是11

country1 <- c("a", "a", "a", "a")
country2 <- c("b", "c", "b", "d")
x <- c(0,1,1,1)
y <- c(10, 10, 11, 10)
df <- data.frame(country1, country2, x, y)

df
country1 country2 x  y
a        b        0 10
a        c        1 10
a        b        1 11
a        d        1 10
数据集大约有900000行,因此我希望匹配所有匹配的y值,而不是在上面的示例中写出y==10这样的每个值。

一个dplyr可能是:

df %>%
 group_by(country1, x, y) %>%
 filter(n() == 2)

  country1 country2     x     y
  <fct>    <fct>    <dbl> <dbl>
1 a        c            1    10
2 a        d            1    10
dplyr的一种可能性是:

df %>%
 group_by(country1, x, y) %>%
 filter(n() == 2)

  country1 country2     x     y
  <fct>    <fct>    <dbl> <dbl>
1 a        c            1    10
2 a        d            1    10

我没有想到使用发生频率。这将为我的真实数据返回0个观察值。如果我理解上面的代码,它会在组中每次出现两个y时查找?它会将country1、x和y列的组合保留为两个case。你能详细说明一下它什么时候不起作用吗?我相信这是因为数据是二元的,它们应该被另一个时间变量分组,这会导致所有对出现2次以上,我可能需要修改这个问题。就是这样,谢谢!我忘了添加第二个时间变量,如果我按节在组_中添加一个时间变量t,它会起作用。我没有想到使用出现频率。这将为我的真实数据返回0个观察值。如果我理解上面的代码,它会在组中每次出现两个y时查找?它会将country1、x和y列的组合保留为两个case。你能详细说明一下它什么时候不起作用吗?我相信这是因为数据是二元的,它们应该被另一个时间变量分组,这会导致所有对出现2次以上,我可能需要修改这个问题。就是这样,谢谢!我忘了添加第二个时间变量,如果我在组_by section中添加一个时间变量t,它就会起作用。
df %>%
 group_by(country1, x, y) %>%
 filter(n() == 2)

  country1 country2     x     y
  <fct>    <fct>    <dbl> <dbl>
1 a        c            1    10
2 a        d            1    10