
上QQ阅读APP看书,第一时间看更新
Filtering with filter
The filter verb can be used to extract a subset of rows matching the filter criteria, as shown:
# Filter states with < 1% Illiteracy (i.e., > 99% literacy) filter(tstate, Illiteracy < 1) # Equivalently -> filter(tstate, (100 - Illiteracy) > 99) # Filter states with < 1% Illiteracy and Income > the mean Income of all states # We will apply the AND condition using & filter(tstate, Illiteracy < 1 & Income > mean(Income)) # This is the same as using , (comma), multiple parameters are treated as AND identical(filter(tstate, Illiteracy < 1 & Income > mean(Income)),filter(tstate, Illiteracy < 1, Income > mean(Income))) # [1] TRUE # Filter states with Income > the mean Income of all states OR HS Graduation Rate > 60% # We will apply the OR condition using | filter(tstate, Income > mean(Income) | `HS Grad` > 60) # Filter for states in the West Region and the above condition (Income > the mean Income of all states OR HS Graduation Rate > 60%) filter(tstate, (Income > mean(Income) | `HS Grad` > 60) & Region=="West") # Other related verbs include filter_all, filter_if and filter_at # An example for each is given below # Print names of all numeric column filter_all(tstate, all_vars(class(.)=="numeric")) # Filter if ALL row values > 1 using all_vars select_if(tstate, is.numeric) %>% filter_all(all_vars(. > 1)) # When all vars > 1 # Filter if ANY row values > 4000 using any_vars select_if(tstate, is.numeric) %>% filter_all(any_vars(. > 4000)) # When any vars > 4000
There are various other ways that filter can be used and more details can be found at the online resources for the same.