Saya ingin melaporkan min, maks, dan rata-rata kolom tertentu (price, age, dan dist)dari kumpulan data houses menggunakan pipa secara ringkas tibble. Untuk saat ini, saya memiliki kode berikut yang menghasilkan solusi yang agak tidak elegan dengan tibble 1x9:

houses %>% 
  select(price, age, dist) %>%
  summarize_each(list(min = min, max = max, mean = mean))

Saya berharap untuk membuat solusi yang lebih terorganisir menggunakan pipa dengan data yang dipilih sebagai baris dan statistik ringkasan (min, maks, rata-rata) sebagai kolom yang menghasilkan tibble 3x3. Ada ide?

r
1
bristol3328 1 Oktober 2021, 01:20

2 jawaban

Jawaban Terbaik

Solusi yang mungkin untuk menghasilkan dataframe:

library(dplyr)
houses %>% 
  summarise(across(c(price,age,dist),c(max,min,mean))) %>% 
  matrix(ncol = 3, byrow = T) %>% 
  as.data.frame() %>% 
  rename(Max=V1, Min=V2, Mean=V3)

Solusi yang mungkin untuk menghasilkan tibble:

library(dplyr)
houses %>% 
  summarise(across(c(price,age,dist),c(max,min,mean))) %>% 
  matrix(ncol = 3, byrow = T) %>% 
  tibble(Max=unlist(.[,1]),Min=unlist(.[,2]),Mean=unlist(.[,3])) %>% 
  select(Max,Min,Mean)
0
Paul Smith 30 September 2021, 23:40

Anda mungkin terlebih dahulu mendapatkan data dalam format panjang dan kemudian menghitung statistik ringkasan untuk setiap kolom. Berikut adalah contoh dengan kumpulan data mtcars.

library(dplyr)
library(tidyr)

mtcars %>% 
  select(mpg, disp, cyl) %>%
  pivot_longer(cols = everything()) %>%
  group_by(name) %>%
  summarise(min = min(value, na.rm = TRUE), 
            max = max(value, na.rm = TRUE), 
            mean = mean(value, na.rm = TRUE))

#  name    min   max   mean
#  <chr> <dbl> <dbl>  <dbl>
#1 cyl     4     8     6.19
#2 disp   71.1 472   231.  
#3 mpg    10.4  33.9  20.1 
1
Ronak Shah 1 Oktober 2021, 04:10