首页 > 解决方案 > 一步中多个单变量条件的子集?

问题描述

我希望我能充分解释我正在尝试做的事情。我在 R 中工作,对于一个数据集,我试图只保留一个变量的观察结果,另一个变量满足两个条件。

具体来说,我只想保留特定“cyl”的行,其中至少有一个 mpg 值 >20,至少一个 <20。这是来自 mtcars 的一些示例数据,类似于我正在使用的数据。

     mpg cyl
1  21.0   6
2  21.0   6
3  22.8   4
4  21.4   6
5  18.7   8
6  18.1   6
7  14.3   8
8  24.4   4
9  22.8   4
10 19.2   6
11 17.8   6
12 16.4   8
13 17.3   8
14 15.2   8
15 10.4   8
16 10.4   8
17 14.7   8
18 32.4   4
19 30.4   4
20 33.9   4

理想情况下,我对上述示例的输出将如下所示。

     mpg cyl
1  21.0   6
2  21.0   6
4  21.4   6
6  18.1   6
10 19.2   6
11 17.8   6

提前致谢!

标签: rdataframesubset

解决方案


假设您的数据框输入是DF,试试这个:

library(dplyr)

DF %>%
  group_by(cyl) %>%
  filter(sum(mpg > 20) > 1 & sum(mpg < 20) > 1)

# A tibble: 7 x 2
# Groups:   cyl [1]
#    mpg   cyl
#  <dbl> <dbl>
# 1  21       6
# 2  21       6
# 3  21.4     6
# 4  18.1     6
# 5  19.2     6
# 6  17.8     6
# 7  19.7     6

数据

DF <- mtcars[,1:2] 

推荐阅读