99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-11-02 閱讀量: 1372
filter()函數(shù)--邏輯運算符

filter() 中的多個參數(shù)是由“與”組合起來的:每個表達式都必須為真才能讓一行觀測包

含在輸出中。如果要實現(xiàn)其他類型的組合,你需要使用布爾運算符: & 表示“與”、 | 表示

“或”、 ! 表示“非”。

使用dplyr進行數(shù)據(jù)轉(zhuǎn)換

以下代碼可以找出 11 月或 12 月出發(fā)的所有航班:

filter(flights, month == 11 | month == 12)

表達式中的運算順序和語言中的是不一樣的。你不能寫成 filter(flights, month == 11 |

12) 這種形式。這種形式的文字翻譯確實是“找出 11 月或 12 月出發(fā)的所有航班”,但在代

碼中則不是這個意思,代碼中的含義是找出所有出發(fā)月份為 11 | 12 的航班。 11 | 12 這個

邏輯表達式的值為 TRUE,在數(shù)字語境中(如本例), TRUE 就是 1,所以這段代碼找出的不

是 11 月或 12 月出發(fā)的航班,而是 1 月出發(fā)的所有航班。真是夠繞的!

這種問題有一個有用的簡寫形式: x %in% y。這會選取出 x 是 y 中的一個值時的所有行。

我們可以使用這種形式重寫上面的代碼:

nov_dec <- filter(flights, month %in% c(11, 12))

有時你可以使用德摩根定律將復(fù)雜的篩選條件進行簡化: !(x & y) 等價于 !x | !y、 !(x |

y) 等價于 !x & !y。例如,如果想要找出延誤時間(到達或出發(fā))不多于 2 小時的航班,

那么使用以下兩種篩選方式均可:

filter(flights, !(arr_delay > 120 | dep_delay > 120))
filter(flights, arr_delay <= 120, dep_delay <= 120)

除 & 和 | 之外, R 中還有 && 和 || 運算符。先不要使用這兩個運算符!

只要 filter() 函數(shù)中使用的是復(fù)雜的、包含多個部分的表達式,就需要考慮用一個明確的

變量來代替它。這樣檢查代碼會容易很多。我們很快就會介紹如何創(chuàng)建新變量。

0.0000
0
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子