使用R在表中显示统计信息
我正在使用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控制台上的输出为: &
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
函数iecor(湿度、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 —