R語言基礎(chǔ)入門(2) filter的使用方法從基礎(chǔ)到高級

今天來介紹tidyverse體系重要的一員dplyr沈撞,作為數(shù)據(jù)處理的一大利器dplyr如它的外觀一樣堕扶,學(xué)好dplyr的使用數(shù)據(jù)處理將變得異常簡單,今天來介紹dplyr中過濾函數(shù)filter的使用方法

> iris %>% as_tibble()
# A tibble: 150 x 5
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
          <dbl>       <dbl>        <dbl>       <dbl> <fct>  
 1          5.1         3.5          1.4         0.2 setosa 
 2          4.9         3            1.4         0.2 setosa 
 3          4.7         3.2          1.3         0.2 setosa 
 4          4.6         3.1          1.5         0.2 setosa 
 5          5           3.6          1.4         0.2 setosa 
 6          5.4         3.9          1.7         0.4 setosa 
 7          4.6         3.4          1.4         0.3 setosa 
 8          5           3.4          1.5         0.2 setosa 
 9          4.4         2.9          1.4         0.2 setosa 
10          4.9         3.1          1.5         0.1 setosa 
# … with 140 more rows

還是使用我們熟悉的iris(鳶尾花)數(shù)據(jù)集龄毡,可以看到數(shù)據(jù)有5列薄声,150行,數(shù)據(jù)類型為數(shù)據(jù)框破镰;分別表示Sepal.Length(花萼長度)餐曼,Sepal.Width(花萼寬度)、Petal.Length(花瓣長度)鲜漩,Petal.Width(花瓣寬度)源譬、Species(花的類型),其中花有3種類型(setosa孕似、versicolor踩娘、virginica)

基本行過濾

篩選出含有setosa的行,注意是 ==

iris %>% as_tibble() %>% filter(Species=="setosa")

篩選出不含有setosa的行喉祭,R中!= 代表不等于

iris %>% as_tibble() %>% filter(Species !="setosa")

# 此2種方法結(jié)果一致养渴,處理復(fù)雜數(shù)據(jù)時推薦第二種
iris %>% as_tibble() %>% filter(!Species %in% "setosa")

根據(jù)2個關(guān)鍵詞進(jìn)行篩選 通過%in%進(jìn)行判斷

iris %>% as_tibble() %>% 
  filter(.,Species %in% c("setosa","virginica"))

!Species 表示不包含在其中雷绢,此處注意前面的.,

iris %>% as_tibble() %>% 
  filter(.,!Species %in% c("setosa","virginica"))

根據(jù)多個條件進(jìn)行篩選

  • filter(condition1, condition2) 將返回同時滿足兩個條件的行
  • filter(condition1, !condition2) 將返回條件一為真但條件二為不成立的所有行
  • filter(condition1 | condition2) 將返回滿足條件1和/或條件2的行
  • filter(xor(condition1, condition2) 將返回僅滿足一個條件的所有行,而不是同時滿足兩個條件的所有行
iris %>% as_tibble() %>% 
  filter(Species=="setosa",Sepal.Length >= 5)

& 在R中表示和的意思與,作用一致厚脉;|或的意思

iris %>% as_tibble() %>% 
  filter(.,(Species=="setosa" & !Sepal.Length >= 5))
iris %>% as_tibble() %>% 
  filter(.,(Species=="setosa" | Sepal.Length >= 5))

重點(diǎn)xor

xor只返回僅滿足一個條件的所有行习寸,而不是同時滿足兩個條件的所有行
c(T,F) | c(F,T)2種情況

iris %>% as_tibble() %>% 
  filter(.,xor(Species=="setosa",Sepal.Length >= 5))

可通過以下代碼驗(yàn)證上面的結(jié)果

iris %>% as_tibble() %>% 
  filter(.,(Species=="setosa" & !Sepal.Length >= 5))
iris %>% as_tibble() %>% 
  filter(.,Species!= "setosa",Sepal.Length >= 5)

多條件嵌套過濾

此代碼將首先提取出含有setosa的行胶惰,
之后根據(jù)Sepal.Length >= 5這一條件對其進(jìn)行過濾傻工,
最后將含有versicolor","virginica"的數(shù)據(jù)追加上去

iris %>% as_tibble() %>% 
  filter(.,(Species=="setosa" & Sepal.Length >= 5)|(Species %in% c("versicolor","virginica")))

刪除Species中含有NA的行

iris %>% filter(!is.na(Species))

跨多列過濾

  • filter_all() 過濾所有列
  • filter_if()需要一個返回的布爾值以指示要過濾列的類型。如果是符合條件則將遵循這些列進(jìn)行過濾
  • filter_at()要求在vars() 參數(shù)中指定要進(jìn)行過濾的列

filter_all( )

對數(shù)值執(zhí)行全部篩選:此代碼將保留任何值等于5的行

iris %>% filter_all(any_vars(. == 5))

對字符串進(jìn)行過濾孵滞,在所有列中檢索含有"Ca"的字符串中捆,需要將條件包裝在any_vars()中

msleep %>% 
  select(name:order, sleep_total, -vore) %>% 
  filter_all(any_vars(str_detect(., pattern = "Ca")))

filter_if( )

下面這段代碼首先對列的類型進(jìn)行判斷,再在字符列中篩選NA

msleep %>% 
  select(name:order, sleep_total:sleep_rem) %>% 
  filter_if(is.character, any_vars(is.na(.)))

filter_at( )

filter_at( )它不篩選所有列坊饶,也不需要您指定列的類型,可以通過vars() 參數(shù)選擇要對那些列進(jìn)行篩選

iris %>% 
  filter_at(vars(Sepal.Length,Petal.Length),all_vars(. >=6))
   Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1           6.3         3.3          6.0         2.5 virginica
2           7.6         3.0          6.6         2.1 virginica
3           7.3         2.9          6.3         1.8 virginica
4           7.2         3.6          6.1         2.5 virginica
5           7.7         3.8          6.7         2.2 virginica
6           7.7         2.6          6.9         2.3 virginica
7           7.7         2.8          6.7         2.0 virginica
8           7.2         3.2          6.0         1.8 virginica
9           7.4         2.8          6.1         1.9 virginica
10          7.9         3.8          6.4         2.0 virginica
11          7.7         3.0          6.1         2.3 virginica
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泄伪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匿级,更是在濱河造成了極大的恐慌蟋滴,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痘绎,死亡現(xiàn)場離奇詭異津函,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)孤页,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門尔苦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人行施,你說我怎么就攤上這事允坚。” “怎么了蛾号?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵稠项,是天一觀的道長。 經(jīng)常有香客問我鲜结,道長皿渗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任轻腺,我火速辦了婚禮乐疆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贬养。我一直安慰自己挤土,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布误算。 她就那樣靜靜地躺著仰美,像睡著了一般迷殿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咖杂,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天庆寺,我揣著相機(jī)與錄音,去河邊找鬼诉字。 笑死懦尝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壤圃。 我是一名探鬼主播陵霉,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伍绳!你這毒婦竟也來了踊挠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤冲杀,失蹤者是張志新(化名)和其女友劉穎效床,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體权谁,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剩檀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了闯传。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谨朝。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖甥绿,靈堂內(nèi)的尸體忽然破棺而出字币,到底是詐尸還是另有隱情,我是刑警寧澤共缕,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布洗出,位于F島的核電站,受9級特大地震影響图谷,放射性物質(zhì)發(fā)生泄漏翩活。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一便贵、第九天 我趴在偏房一處隱蔽的房頂上張望菠镇。 院中可真熱鬧,春花似錦承璃、人聲如沸利耍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隘梨。三九已至程癌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轴猎,已是汗流浹背嵌莉。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捻脖,地道東北人锐峭。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像郎仆,于是被迫代替她去往敵國和親只祠。 傳聞我的和親對象是個殘疾皇子兜蠕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容