Search code examples
rdplyrsummarizeacross

Dyplr summarise across output as rows?


I would like to generate overview tables for the same statistics (e.g., n, mean, sd) across multiple variables.

I started with combining the dyplr summarise and across function. See follwing example:

df <- data.frame(
  var1 = 1:10,
  var2 = 11:20
)
VarSum <- df %>% summarise(across(c(var1, var2), list(n = length, mean = mean, sd = sd)))

The output is of course given as one row (1x6) with three colums for each variable in this example. What I would like to achieve is to get the output rowise for each variable (2x3). Is that even possible with my approach? Would appriciate any suggestions.


Solution

  • You can pivot first:

    library(dplyr)
    library(tidyr)
    df %>% 
      pivot_longer(everything()) %>% 
      summarise(across(value, list(n = length, mean = mean, sd = sd)), .by = name)
    
      name  value_n value_mean value_sd
      <chr>   <int>      <dbl>    <dbl>
    1 var1       10        5.5     3.03
    2 var2       10       15.5     3.03