select () выбирает больше столбцов, чем я говорю. Почему? - Р - PullRequest
1 голос
/ 17 октября 2019

Например, когда я использую select() из dplyr:

mtcars %>% select(., cyl, disp)

Он выбирает правильно cyl и disp. Но когда я делаю это в кадре данных, над которым я работаю (предположим, что это iris):

iris %>% select(., Sepal.Length, Sepal.Width)

он выбирает Sepal.Length, Sepal.Width и Petal.Length, даже когда я 'Я не говорю, чтобы выбрать Petal.Length. Это очень расстраивает, так как я не могу найти в документации, stackoverflow или в Google никаких объяснений.

В конце мне интересно, когда select() выберет столбцы, я не говорю, чтобы они выбирали? Есть предложения?

РЕДАКТИРОВАТЬ - ДАННЫЕ:

structure(list(codigo_estacion = 11545000L, institucion = "DGA", 
    fuente = "dga_web", nombre = "Rio Baker Bajo ÑAdis", altura = 45L, 
    latitud = -47.5, longitud = -72.9749984741211, codigo_cuenca = 115L, 
    nombre_sub_cuenca = "Rio Baker Entre Arriba Rio De La Colonia Y Desemb.", 
    cantidad_observaciones = 4736L, fecha = structure(15624, class = "Date"), 
    caudal = 692, gauge_id = 11545000L, gauge_name = "Rio Baker Bajo ÑAdis", 
    precip_promedio = 0.454545468091965, temp_max_promedio = 17.0166664123535, 
    estacion_ano = "Primavera", caudal_extremo = 0, temp_extremo = 0, 
    precip_extremo = 0), class = c("grouped_df", "tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -1L), groups = structure(list(
    codigo_estacion = 11545000L, estacion_ano = "Primavera", 
    .rows = list(1L)), row.names = c(NA, -1L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE))

Код, который я использую:

df %>% dplyr::select(codigo_estacion, caudal_extremo)

Но он дает столбцы estacion_ano, codigo_estacion и caudal_extremo.

1 Ответ

0 голосов
/ 18 октября 2019

Предоставленные вами данные представляют собой фрейм данных, сгруппированный по переменной estacion_ano. При использовании select в сгруппированном фрейме данных к результату автоматически добавляются сгруппированные переменные. Вы можете ungroup непосредственно перед использованием select:

df %>% 
  dplyr::ungroup() %>% 
  dplyr::select(codigo_estacion, caudal_extremo)

# A tibble: 1 x 2
# codigo_estacion caudal_extremo
#           <int>          <dbl>
# 1      11545000              0
...