#r #dplyr
#r #dplyr
Вопрос:
Как я могу извлечь значение из отфильтрованного фрейма данных?
Например, давайте возьмем 100 сотен самых длинных рейсов в наборе данных о рейсах.
library(dplyr)
data(flights)<-data(flights)
flights %>%
slice_max(order_by=arr_time, n=100)
И я хочу извлечь вектор расстояния. Итак, почему я это сделал :
df<-flights %>%
slice_max(order_by=arr_time, n=100)
vec<-df['distance']
#Problem
length(vec)
150
Итак, мой вопрос: почему длина равна 150, а не 100?
Комментарии:
1. Используйте аргумент
with_ties
= F для получения первых 100 значений.
Ответ №1:
max
значение в arr_time
равно 2400
max(flights$arr_time, na.rm = TRUE)
#[1] 2400
Всего 150 строк, в flights
которых есть это значение.
sum(flights$arr_time == max(flights$arr_time, na.rm = TRUE), na.rm = TRUE)
#[1] 150
slice_max
сохраняет все строки в случае привязки, следовательно, выбираются все строки, которые имеют значение 2400. Если вы хотите получить точные 100 строк arrange
данных, а затем slice
выбрать первые 100 строк.
library(dplyr)
df %>% arrange(desc(arr_time)) %>% slice(1:100)