如何仅报告 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
我有一个数据集,我需要创建一个简单的 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