Преобразовать сводную таблицу, сгенерированную из пакета сводной таблицы, в датафрейм - PullRequest
1 голос
/ 01 июня 2019

Я пытаюсь создать сводную таблицу с пакетом pivottabler. Я хочу преобразовать объект сводной таблицы в фрейм данных, чтобы я мог преобразовать его в таблицу данных (с DT) и отобразить его в приложении Shiny, чтобы его можно было загрузить.

library(pivottabler)
pt = qpvt(mtcars, 'cyl', 'vs', 'n()')

Я пытался преобразовать его в матрицу

as.data.frame(pt)

Я получил сообщение об ошибке, как показано ниже:

Error in as.data.frame.default(pt) : cannot coerce class ‘c("PivotTable", "R6")’ to a data.frame

Кто-нибудь знает, как преобразовать объект сводной таблицы в фрейм данных?

1 Ответ

1 голос
/ 01 июня 2019

Это R6 класс.Одним из вариантов может быть извлечение с помощью asDataFrame, которое может быть обнаружено, если мы проверим str

str(pt)
#...
#...
#asDataFrame: function (separator = " ", stringsAsFactors = default.stringsAsFactors()) 
#asJSON: function () 
#asList: function () 
#asMatrix: function (includeHeaders = TRUE, repeatHeaders = FALSE, rawValue = FALSE) 
#asTidyDataFrame: function (includeGroupCaptions = TRUE, includeGroupValues = TRUE, 
...

Следовательно, применяя asDataFrame() к объекту R6

out <- pt$asDataFrame()
out
#     0  1 Total
#4      1 10    11
#6      3  4     7
#8     14 NA    14
#Total 18 14    32

str(out)
#'data.frame':  4 obs. of  3 variables:
#$ 0    : int  1 3 14 18
#$ 1    : int  10 4 NA 14
#$ Total: int  11 7 14 32

иличтобы получить matrix, asMatrix

pt$asMatrix()
#      [,1]    [,2] [,3] [,4]   
#[1,] ""      "0"  "1"  "Total"
#[2,] "4"     "1"  "10" "11"   
#[3,] "6"     "3"  "4"  "7"    
#[4,] "8"     "14" ""   "14"   
#[5,] "Total" "18" "14" "32"   
...