2017-08-29 69 views
-2

例如,我有一个数据框,如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

我总是喜欢给它使用dplyr一个答案,因为它的组织和“扯皮”的数据一个伟大的图书馆:

library(dplyr) 
newdf2 = filter(cars, speed > 18 & dist < 76) 
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 
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 
+0

有什么使用'c()'的一点? – Masoud

+0

@Masoud,没有,谢谢你的提示! – HannekeLettinga

相关问题