Convert summary to data.frame

前端 未结 2 1321
醉话见心
醉话见心 2020-12-05 07:29

I have this admission_table containing ADMIT, GRE, GPA and RANK.

> head(admission_table)
         


        
2条回答
  •  伪装坚强ぢ
    2020-12-05 07:58

    You can consider unclass, I suppose:

    data.frame(unclass(summary(mydf)), check.names = FALSE, stringsAsFactors = FALSE)
    #              ADMIT             GRE             GPA            RANK
    # 1 Min.   :0.0000   Min.   :380.0   Min.   :2.930   Min.   :1.000  
    # 2 1st Qu.:0.2500   1st Qu.:550.0   1st Qu.:3.047   1st Qu.:2.250  
    # 3 Median :1.0000   Median :650.0   Median :3.400   Median :3.000  
    # 4 Mean   :0.6667   Mean   :626.7   Mean   :3.400   Mean   :2.833  
    # 5 3rd Qu.:1.0000   3rd Qu.:735.0   3rd Qu.:3.655   3rd Qu.:3.750  
    # 6 Max.   :1.0000   Max.   :800.0   Max.   :4.000   Max.   :4.000  
    str(.Last.value)
    # 'data.frame': 6 obs. of  4 variables:
    #  $     ADMIT: chr  "Min.   :0.0000  " "1st Qu.:0.2500  " "Median :1.0000  " "Mean   :0.6667  " ...
    #  $      GRE : chr  "Min.   :380.0  " "1st Qu.:550.0  " "Median :650.0  " "Mean   :626.7  " ...
    #  $      GPA : chr  "Min.   :2.930  " "1st Qu.:3.047  " "Median :3.400  " "Mean   :3.400  " ...
    #  $      RANK: chr  "Min.   :1.000  " "1st Qu.:2.250  " "Median :3.000  " "Mean   :2.833  " ...
    

    Note that there is a lot of excessive whitespace there, in both the names and the values.

    However, it might be sufficient to do something like:

    do.call(cbind, lapply(mydf, summary))
    #          ADMIT   GRE   GPA  RANK
    # Min.    0.0000 380.0 2.930 1.000
    # 1st Qu. 0.2500 550.0 3.048 2.250
    # Median  1.0000 650.0 3.400 3.000
    # Mean    0.6667 626.7 3.400 2.833
    # 3rd Qu. 1.0000 735.0 3.655 3.750
    # Max.    1.0000 800.0 4.000 4.000
    

提交回复
热议问题