Обобщение фрейма данных в R с использованием нескольких функций?

#r #dplyr

Вопрос:

Я новичок в R и пытаюсь обобщить фрейм данных с несколькими функциями, и я хотел бы, чтобы результат отображался в одном столбце, а не в отдельных столбцах для каждой функции. Например, мой набор данных выглядит примерно так

 data =  
  A  B
  ----
  1  2
  2  2
  3  2
  4  2
 

И я называю summarize_all(data, c(min, max)) фрейм данных становится

 a_fn1 b_fn1 a_fn2 b_fn2
    1     2     4     2
 

Как я могу сделать так, чтобы результат summarize_all стал таким:

   A  B
  ----
  1  2
  4  2
 

Спасибо

Ответ №1:

Работает ли это:

 library(dplyr)
bind_rows(apply(data,2,min),apply(data,2,max))
# A tibble: 2 x 2
      A     B
  <dbl> <dbl>
1     1     2
2     4     2
 

Комментарии:

1. Это действительно работает! И как я мог бы использовать это в трубе dplyr?

2. @Anonymous, вы можете попробовать apply(data,2,min) %>% bind_rows(apply(data,2,max))

Ответ №2:

Вот вариант с transpose

 library(dplyr)
library(tidyr)
pivot_longer(df1, cols = everything()) %>% 
    group_by(name) %>% 
    summarise(min = min(value), max = max(value)) %>% 
    data.table::transpose(., make.names = 'name')
  A B
1 1 2
2 4 2
 

данные

 df1 <- structure(list(A = 1:4, B = c(2L, 2L, 2L, 2L)),
 class = "data.frame", row.names = c(NA, 
-4L))