考虑以下数据集:
data <- tibble(
group = rep(1:4, 40),
year = rep(1980:2019, 4),
col= rnorm(160)
)
我想对数据进行如下筛选:
获取第1组和第2组的col值大于零,第3组和第4组的col值小于零的子集
考虑以下数据集:
data <- tibble(
group = rep(1:4, 40),
year = rep(1980:2019, 4),
col= rnorm(160)
)
我想对数据进行如下筛选:
获取第1组和第2组的col值大于零,第3组和第4组的col值小于零的子集
这是另一种直接用数学而不是%in%
Select 的方法
data %>% filter(col * sign((group < 3) - 0.5) > 0)
#> # A tibble: 76 x 3
#> group year col
#> <int> <int> <dbl>
#> 1 2 1985 2.20
#> 2 3 1986 -0.205
#> 3 4 1991 -2.10
#> 4 3 1994 -0.113
#> 5 2 1997 1.90
#> 6 1 2000 1.37
#> 7 3 2002 -0.805
#> 8 4 2003 -0.535
#> 9 1 2004 0.792
#> 10 3 2006 -1.28
#> # ... with 66 more rows