2021-05-11 dplyr包使用——按行筛选:filter函数与slice函数

filter——按行筛选

filter()按给定的逻辑条件筛选出符合要求的子集, 类似于 base::subset() 函数。
语法:filter(.data, ...)

library(dplyr)
library(tidyverse) #tidyverse是一个汇总包,其中包括了dplyr

#更好地数据输出显示(以下两种选其一即可)
iris <- tbl_df(iris)
iris %>% as_tibble()
#筛选含有setosa的行
iris %>% as_tibble() %>% filter(Species=="setosa")
iris %>% as_tibble() %>% filter(Species %in% "setosa")
#筛选不含有setosa的行
iris %>% as_tibble() %>% filter(Species !="setosa")
iris %>% as_tibble() %>% filter(!Species %in% "setosa")
#筛选含有setosa和virginica并且Petal.Length不小于1.4的行
iris %>% as_tibble() %>%   filter(Species %in% c("setosa","virginica")& Petal.Length>=1.4)

#xor 参数设置:只返回仅满足一个条件的所有行,而不是同时满足两个条件的所有
#筛选含有setosa的行或者Sepal.Length不小于5的行(不会返回同时含有setosa并且Sepal.Length不小于5的行)
iris %>% as_tibble() %>% 
  filter(.,xor(Species=="setosa",Sepal.Length >= 5))

slice() 函数通过行号选取数据。
语法:slice(.data, ...)

#选取第一行数据
slice(iris, 1L)
filter(iris, row_number() == 1L)
#选取最后一行数据
slice(iris, n())
filter(iris, row_number() == n())
#选取第50行到最后一行所有数据
slice(iris, 50:n())
filter(iris, between(row_number(), 50, n()))

Reference

https://dplyr.tidyverse.org/reference/filter.html
https://mp.weixin.qq.com/s/AOuu_ny2p0rcmTUEzCatoQ
https://blog.csdn.net/wltom1985/article/details/54973811

你可能感兴趣的:(2021-05-11 dplyr包使用——按行筛选:filter函数与slice函数)