将从数据透视表包生成的数据透视表转换为数据框

时间:2019-06-01 20:19:56

标签: r pivot pivot-table rpivottable

我正在尝试使用do { // ....... echo $row['content']; echo time_elapsed_string($row['post_date']); // ....... } while ($row = $sql->fetch_array()); 软件包制作数据透视表。我想将数据透视表对象转换为数据框,以便可以将其转换为数据表(使用DT)并在Shiny应用程序中呈现,以便可以下载。

pivottabler

我试图将其转换为矩阵

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

我收到如下错误消息:

as.data.frame(pt)

有人知道如何将数据透视表对象转换为数据框吗?

1 个答案:

答案 0 :(得分:1)

这是一个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, 
...

因此,在R6对象上应用asDataFrame()

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

或获取matrixasMatrix

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"