如何将函数摘要(data_frame)的输出转换为R中的数据框

时间:2015-06-30 16:01:30

标签: r summary

我有一个数据框,我希望得到每个列的摘要,我希望这个输出以表格格式呈现。我试过了

summary_table <- as.data.frame(summary(mydata))

但它不起作用。有帮助吗?

2 个答案:

答案 0 :(得分:3)

我不知道我会认为这是一种“可呈现”的格式,但如果你真的坚持unclass,你可以始终summary data.frame的结果一种“宽泛”的形式。

data.frame(unclass(summary(airquality)))
##         X....Ozone     X...Solar.R       X.....Wind      X.....Temp      X....Month      X.....Day
## 1 Min.   :  1.00   Min.   :  7.0   Min.   : 1.700   Min.   :56.00   Min.   :5.000   Min.   : 1.0  
## 2 1st Qu.: 18.00   1st Qu.:115.8   1st Qu.: 7.400   1st Qu.:72.00   1st Qu.:6.000   1st Qu.: 8.0  
## 3 Median : 31.50   Median :205.0   Median : 9.700   Median :79.00   Median :7.000   Median :16.0  
## 4 Mean   : 42.13   Mean   :185.9   Mean   : 9.958   Mean   :77.88   Mean   :6.993   Mean   :15.8  
## 5 3rd Qu.: 63.25   3rd Qu.:258.8   3rd Qu.:11.500   3rd Qu.:85.00   3rd Qu.:8.000   3rd Qu.:23.0  
## 6 Max.   :168.00   Max.   :334.0   Max.   :20.700   Max.   :97.00   Max.   :9.000   Max.   :31.0  
## 7     NA's   :37       NA's   :7               <NA>            <NA>            <NA>           <NA>

然而,我发现输出包含大量冗余信息。

我想您也可以考虑以下功能:

summaryDF <- function(indf) {
  require(splitstackshape)
  temp <- data.table(summary(indf))[, c("V2", "N"), with = FALSE]
  dcast.data.table(cSplit(temp, "N", ":")[!is.na(N_1)],
                   N_1 ~ V2, value.var = "N_2")
}


summaryDF(airquality)
##        N_1      Day      Temp      Wind     Month     Ozone    Solar.R
## 1: 1st Qu.      8.0     72.00     7.400     6.000     18.00      115.8
## 2: 3rd Qu.     23.0     85.00    11.500     8.000     63.25      258.8
## 3:    Max.     31.0     97.00    20.700     9.000    168.00      334.0
## 4:    Mean     15.8     77.88     9.958     6.993     42.13      185.9
## 5:  Median     16.0     79.00     9.700     7.000     31.50      205.0
## 6:    Min.      1.0     56.00     1.700     5.000      1.00        7.0
## 7:    NA's       NA        NA        NA        NA     37.00        7.0

不要指望具有不同类型列的数据集上的奇迹。例如,summaryDF(iris)没有意义。

此外,如果您的数据集中没有任何NA值,您可能只能使用sapply

sapply(mtcars, summary)
##           mpg   cyl  disp    hp  drat    wt  qsec     vs     am  gear  carb
## Min.    10.40 4.000  71.1  52.0 2.760 1.513 14.50 0.0000 0.0000 3.000 1.000
## 1st Qu. 15.42 4.000 120.8  96.5 3.080 2.581 16.89 0.0000 0.0000 3.000 2.000
## Median  19.20 6.000 196.3 123.0 3.695 3.325 17.71 0.0000 0.0000 4.000 2.000
## Mean    20.09 6.188 230.7 146.7 3.597 3.217 17.85 0.4375 0.4062 3.688 2.812
## 3rd Qu. 22.80 8.000 326.0 180.0 3.920 3.610 18.90 1.0000 1.0000 4.000 4.000
## Max.    33.90 8.000 472.0 335.0 4.930 5.424 22.90 1.0000 1.0000 5.000 8.000

答案 1 :(得分:0)

就像使用 as.data.frame(describe(mydata)) 包的 psych 一样简单。