Kilsen
Kilsen

Reputation: 65

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.

Upvotes: 1

Views: 57

Answers (1)

Ma&#235;l
Ma&#235;l

Reputation: 52409

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

Upvotes: 1

Related Questions