Как я могу извлечь вектор из отфильтрованного фрейма данных

#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)