将tapply摘要结果转换为数据框

时间:2018-06-07 10:36:26

标签: r

我的代码是:

Normality <- tapply(input$TotalAuthBdNet.USD., input$Country, summary)

显示的输出是:

$Albania
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
0.000e+00 1.066e+04 2.730e+04 3.403e+07 5.015e+04 2.720e+09 

$Angola
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   5405   15323   52522  486451  170000 4513196 

$`Antigua and Barbuda`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  22622   22622   22622   22622   22622   22622       2 

$Argentina
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
      0   15814   45000  212800  193626 4080293      15 

国家/地区名称是行,每个国家/地区都有此类统计信息。我希望输出为:

Country   Min.        1st Qu.  Median    Mean     3rd Qu.      Max.    NA's 
Albania  0.000e+00 1.066e+04 2.730e+04 3.403e+07 5.015e+04 2.720e+09
Angola      5405   15323   52522  486451  170000 4513196
Argentina      0   15814   45000  212800  193626 4080293      15

国家/地区名称是从文件中识别的列表。

2 个答案:

答案 0 :(得分:0)

一个简单的rbind可以......例如。

do.call(rbind, tapply(mpg$year, mpg$model, summary))

答案 1 :(得分:0)

您也可以直接致电aggregate,这样您就不需要额外的步骤了:

aggregate(Sepal.Length ~ Species, iris, summary)
#      Species Sepal.Length.Min. Sepal.Length.1st Qu. Sepal.Length.Median Sepal.Length.Mean Sepal.Length.3rd Qu. Sepal.Length.Max.
# 1     setosa             4.300                4.800               5.000             5.006                5.200             5.800
# 2 versicolor             4.900                5.600               5.900             5.936                6.300             7.000
# 3  virginica             4.900                6.225               6.500             6.588                6.900             7.900