2017-08-29 95 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

相關問題