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