如何仅使用R在报告变量的表格中报告选定的摘要统计信息?

问题描述

我有一个数据集,我需要创建一个简单的表,其中包含所有变量(列)的观察值,均值和标准差。我找不到所需的3个摘要统计信息的方法。我尝试过的所有内容都会不断地给我最小,最大,中位数,第一和第三四分位数等。表格应该看起来像这样(带有标题):

Table 1: Table Title
_______________________________________
Variables   Observations  Mean  Std.Dev
_______________________________________
Age            30          24      2
...             .          .       .
...             .          .       .
_______________________________________

summary ()不起作用,因为它提供了太多其他摘要统计信息。我已经做到了:

sapply(dataset,function(x) list(means=mean(x,na.rm=TRUE),sds=sd(x,na.rm=TRUE)))

但是如何从中形成表格呢?还有比使用“ sapply”更好的方法吗?

解决方法

sapply确实返回了所需的值,但是结构不正确。

mtcars数据为例:

#Get the required statistics and convert the data into dataframe
summ_data <- data.frame(t(sapply(mtcars,function(x) 
                     list(means = mean(x,na.rm=TRUE),sds = sd(x,na.rm=TRUE)))))
#Change rownames to new column
summ_data$variables <- rownames(summ_data)
#Remove rownames
rownames(summ_data) <- NULL
#Make variable column as 1st column
cbind(summ_data[ncol(summ_data)],summ_data[-ncol(summ_data)])

另一种方法是使用dplyr函数:

library(dplyr)

mtcars %>%
  summarise(across(.fns = list(means = mean,sds = sd),.names = '{col}_{fn}')) %>%
  tidyr::pivot_longer(cols = everything(),names_to = c('variable','.value'),names_sep = '_')

# A tibble: 11 x 3
#   variable   means     sds
#   <chr>      <dbl>   <dbl>
# 1 mpg       20.1     6.03 
# 2 cyl        6.19    1.79 
# 3 disp     231.    124.   
# 4 hp       147.     68.6  
# 5 drat       3.60    0.535
# 6 wt         3.22    0.978
# 7 qsec      17.8     1.79 
# 8 vs         0.438   0.504
# 9 am         0.406   0.499
#10 gear       3.69    0.738
#11 carb       2.81    1.62