slice():按位置提取行 filter():提取符合特定逻辑条件的行。 例如,iris%>%filter(Sepal.Length> 6)。 filter_all(),filter_if()和filter_at():过滤变量然后选择行。 这些函数复制所有变量或变量选择的逻辑标准。 sample_n():随机选择n行 sample_frac():随机选择一小部分行 top_n():选择变量排序的前n行
<:少于
>:大于
<=:小于或等于
>=:大于或等于
==:相等
!=:不相等
%in%:在之内。 例如,“a in%c(2,3)”表示a可能等于2或3。
is.na():是NA
!is.na():不是NA。
value == 2 | 3:表示值等于2或3。与value%c(2,3)相同
&:和。 例如,性别==“女性”&年龄> 25岁
# 选择Sepal.Length > 7的行
my_data %>% filter(Sepal.Length > 7)
#选择Sepal.Length > 6.7, Sepal.Width <= 3的行
my_data %>% filter(Sepal.Length > 6.7, Sepal.Width <= 3)
#选择Sepal.Length > 6.7, Species == "versicolor"的行
my_data %>% filter(Sepal.Length > 6.7, Species == "versicolor")
#选择 Sepal.Length > 6.7,且Species == "versicolor"或者 Species == "virginica"的行
my_data %>% filter(
Sepal.Length > 6.7,
Species == "versicolor" | Species == "virginica"
)
#选择 Sepal.Length > 6.7,且Species == "versicolor"或者 Species == "virginica"的行
my_data %>% filter(
Sepal.Length > 6.7,
Species %in% c("versicolor", "virginica" )
)
通过删除分组列“Species”,从my_data创建一个新的演示数据集:
#去掉Species列
my_data2 <- my_data %>% select(-Species)
#选择所有属性大于2的行
my_data2 %>% filter_all(all_vars(.> 2))
#选择任何一个属性大于2的行
my_data2 %>% filter_all(any_vars(.> 2))
#选择以sep开头的属性任一大于2的行
my_data2 %>% filter_at(vars(starts_with("Sep")), any_vars(. > 2))
friends_data <- data_frame(
name = c("A", "B", "C"),
age = c(27, 25, 29),
height = c(180, NA, NA),
married = c("yes", "yes", "no")
)
#选择height属性是NA的行
friends_data %>% filter(is.na(height))
#选择height属性非NA的行
friends_data %>% filter(!is.na(height))
可以使用函数sample_n()选择n个随机行,也可以使用sample_frac()选择行的随机分数。 我们首先使用函数set.seed()来启动随机数生成器引擎。 这对于用户重现分析非常重要。
set.seed(1234)
#无放回的随机取五行
my_data %>% sample_n(5, replace = FALSE)
#无放回的随机取5%行
my_data %>% sample_frac(0.05, replace = FALSE)
#根据Sepal.Length值取最大的五行
my_data %>% top_n(5, Sepal.Length)
#根据Species分组,然后以Sepal.Length值取最高的五行
my_data %>%
group_by(Species) %>%
top_n(5, Sepal.Length)
按逻辑条件筛选行:my_data%>%filter(Sepal.Length> 7) 选择n个随机行:my_data%>%sample_n(10) 选择行的随机分数:my_data%>%sample_frac(10) 按值选择前n行:my_data%>%top_n(10,Sepal.Length)