2014-09-29 4 views
2

Я использовал tapply для генерации сводок по коэффициенту для data.frame. Например,Сохранение сводки данных в виде фрейма данных

Я вижу, что класс s является массивом. Есть ли простой способ преобразования выходов tapply в другой data.frame?

+0

'агрегат()' может быть лучшим выбором функции, чем 'tapply() 'с учетом желаемого результата. – MrFlick

+0

@MrFlick, агрегированный столбец из 'aggregate' будет« матрицей ». Для этого понадобится (несколько неуклюжий) 'do.call (data.frame, aggregate (...)) тип типа. – A5C1D2H2I1M1N2O1R2T1

+0

Спасибо за тестирование @AnandaMahto. Я был на мобильном устройстве, где не мог. – MrFlick

ответ

4

Типичный подход заключается в использовании do.call(rbind, ...), как это:

do.call(rbind, s) 
# Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 4 21.4 22.80 26.0 26.66 30.40 33.9 
# 6 17.8 18.65 19.7 19.74 21.00 21.4 
# 8 10.4 14.40 15.2 15.10 16.25 19.2 

Как отметил @akrun в комментариях ранее, окружив его as.data.frame бы получить вам data.frame.


Если вы открыты для альтернативных вариантов, вы можете также попробовать «data.table», с помощью которого вы можете сделать:

library(data.table) 
as.data.table(mtcars)[, as.list(summary(mpg)), by = cyl] 
# cyl Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 1: 6 17.8 18.65 19.7 19.74 21.00 21.4 
# 2: 4 21.4 22.80 26.0 26.66 30.40 33.9 
# 3: 8 10.4 14.40 15.2 15.10 16.25 19.2