如何仅报告 table 中使用 R 将变量列为行的选定摘要统计信息?

How do I only report selected summary statistics in a table that lists variables as rows using R?

我有一个数据集,我需要创建一个简单的 table,其中包含所有变量(列)的观察次数、均值和标准差。我无法找到一种方法来获得 所需的 3 个汇总统计信息。我尝试的每件事都不断给我最小值、最大值、中值、第一和第三四分位数等。table 应该看起来像这样(有标题):

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

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

sapply 会 return 您想要的值,但它的结构不正确。

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