使用两个条件子集数据框

时间:2017-08-29 21:23:28

标签: r

例如,我有一个像cars这样的数据框,我想创建一个数据框架汽车的子集,其实例为cars$speed>18cars$dist<76

newdf <- cars[c(cars$speed>18,cars$dist<76),]

但是当我运行这个时,我得到了这个结果:

       speed dist
36       19   36
37       19   46
38       19   68
39       20   32
40       20   48
41       20   52
42       20   56
43       20   64
44       22   66
45       23   54
46       24   70
47       24   92
48       24   93
49       24  120
50       25   85
NA       NA   NA
NA.1     NA   NA
NA.2     NA   NA
NA.3     NA   NA
.
.
.
NA.41    NA   NA
NA.42    NA   NA

怎么可以避免得到这个NAs?甚至这是创建具有2个条件的子集的正确方法?

3 个答案:

答案 0 :(得分:5)

newdf <- cars[cars$speed>18 & cars$dist<76,]

> newdf
   speed dist
36    19   36
37    19   46
38    19   68
39    20   32
40    20   48
41    20   52
42    20   56
43    20   64
44    22   66
45    23   54
46    24   70

答案 1 :(得分:4)

试试这个:

newdata <- cars[ which(cars$speed>18 & cars$dist<76), ]
> newdata
   speed dist
36    19   36
37    19   46
38    19   68
39    20   32
40    20   48
41    20   52
42    20   56
43    20   64
44    22   66
45    23   54
46    24   70

答案 2 :(得分:3)

我总是想给出一个使用dplyr的答案,因为它是一个很棒的图书馆,用于组织和#34;争吵&#34;数据:

library(dplyr)
newdf2 = filter(cars, speed > 18 & dist < 76)