使用R在表中显示统计信息

使用R在表中显示统计信息,r,output,R,Output,我正在使用R处理一些统计数据,如均值、中位数、相关性等。 有没有办法以表格形式显示代码的结果? 以下是我的代码示例: cor(Moisture, pH) cor(Moisture, NH3) cor(Moisture, NH3DM) cor(Moisture, NDM) cor(Moisture, N) cor(Moisture, TKN) cor(Moisture, X.Ash) cor(Moisture, CN) cor(Moisture, EC1.5) 此时,R控制台上的输出为: &

我正在使用R处理一些统计数据,如均值、中位数、相关性等。 有没有办法以表格形式显示代码的结果? 以下是我的代码示例:

cor(Moisture, pH)
cor(Moisture, NH3)
cor(Moisture, NH3DM) 
cor(Moisture, NDM) 
cor(Moisture, N)
cor(Moisture, TKN)
cor(Moisture, X.Ash)
cor(Moisture, CN)
cor(Moisture, EC1.5)
此时,R控制台上的输出为:

> cor(Moisture, pH)
[1] -0.03154892
> cor(Moisture, NH3)
[1] -0.2814583
> cor(Moisture, NH3DM) 
[1] -0.1099614
> cor(Moisture, NDM) 
[1] 0.08306996
> cor(Moisture, N)
[1] -0.3728169
> cor(Moisture, TKN)
[1] 0.06975473
> cor(Moisture, X.Ash)
[1] -0.2749583
> cor(Moisture, CN)
[1] 0.002943823
> cor(Moisture, EC1.5)
[1] -0.4049512
我觉得这相当混乱,对于我的班级来说,我们只打算使用R


有什么想法吗?

将要显示的所有数据存储在数据框中。然后使用stargazer软件包

install.packages("stargazer")
library(stargazer)
stargazer(df, align = TRUE, type = "text")

这里有一个解决方案,它可以将单变量(例如,平均值、标准偏差)和双变量(例如,相关性)数据放入一个对象中,然后将这些数据发送到您最喜欢的降价选项(例如,kable)中,并制作成美观的汇总表

我使用mtcars数据,因为它很容易获取,并且有大量的数值变量。我的示例代码使用注释来解释我的想法。descr()函数在提供摘要统计数据方面非常出色,但是为了可用性而提取数据有点烦人。还要注意,fashion()将相关性转换为文本值,这很好,因为在这一点上,它们用于表而不是计算

library(dplyr) # for pipes & select()
library(corrr) # for correlation stuff
library(summarytools) # for descr()
library(stringr)  # for str_to_title()

# load testing data
data("mtcars")
# subset data to drop the binary variables (or any others you don't want); could code as keep variables, but I have fewer here to drop
d1 <- mtcars %>% select(-vs, -am)
# sort so columns are in alphabetical order, this will help ensure data quality in the next steps
d1 <- d1[,order(colnames(d1))]

# get & store quant summary stats (summarytools function)
d2 <- descr(d1)
# save names for later
names.stats <- rownames(d2)
names.var <- colnames(d2)
# extract stored summary stats into usable dataframe
d3 <- as.vector(d2[1:7, 1:ncol(d2)])
d3 <- round(as.data.frame(matrix(d3, nrow=7, ncol=ncol(d2), byrow=FALSE)),2)
colnames(d3) <- str_to_title(names.var)

# save correlation matrix as dataframe
c1 <- d3 %>% select_if(is.numeric) %>% correlate() %>% shave(upper=TRUE) %>% fashion(leading_zeros=TRUE, decimals = 2, na_print = "—")
colnames(c1) <- paste0("Cor.", colnames(c1))

# transpose & add back summary stat names
d3 <- t(d3)
colnames(d3) <- names.stats[1:7]

# add correlations to rest of the summary stats
d3 <- cbind(d3, c1[,2:10])

使用rownames()将它们全部添加到data.frame()(作为一列)中也可以设置通过将所有这些添加到一个
cor
函数ie
cor(湿度、cbind(pH、NH3、NH3DM等))
,您可以节省一点键入时间。这将返回一个命名向量。这两个解决方案都有效,但我喜欢向量的输出。我认为我误解了R在输出方面的实际功能——我认为它可以输出结果,而不仅仅是在控制台上显示结果。例如,我得到了输出,但当我复制并粘贴到excel时,它位于单个列中,而不是每个变量的一列中。有办法解决这个问题吗?感谢这个问题对于很多试图在R中做单变量和双变量汇总统计的人来说是个好问题(问题从单变量开始,然后切换到双变量)。如果我们有代码来为这个请求复制数据,或者至少有更多关于@Bake.G希望显示哪种类型的表内容的信息,那就容易多了。我将在下面介绍一个示例解决方案。
       Mean Std.Dev   Min     Q1 Median     Q3    Max Cor.Carb Cor.Cyl Cor.Disp Cor.Drat Cor.Gear Cor.Hp Cor.Mpg Cor.Qsec Cor.Wt
Carb   2.81    1.62  1.00   2.00   2.00   4.00   8.00        —       —        —        —        —      —       —        —      —
Cyl    6.19    1.79  4.00   4.00   6.00   8.00   8.00     0.74       —        —        —        —      —       —        —      —
Disp 230.72  123.94 71.10 120.65 196.30 334.00 472.00     0.96    0.85        —        —        —      —       —        —      —
Drat   3.60    0.53  2.76   3.08   3.70   3.92   4.93     0.69    0.93     0.73        —        —      —       —        —      —
Gear   3.69    0.74  3.00   3.00   4.00   4.00   5.00     0.67    0.93     0.72     1.00        —      —       —        —      —
Hp   146.69   68.56 52.00  96.00 123.00 180.00 335.00     0.99    0.80     0.98     0.76     0.75      —       —        —      —
Mpg   20.09    6.03 10.40  15.35  19.20  22.80  33.90     0.91    0.92     0.93     0.92     0.91   0.95       —        —      —
Qsec  17.85    1.79 14.50  16.88  17.71  18.90  22.90     0.60    0.87     0.63     0.99     0.98   0.67    0.86        —      —
Wt     3.22    0.98  1.51   2.54   3.33   3.65   5.42     0.89    0.91     0.92     0.91     0.90   0.94    1.00     0.85      —