首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将由透视包生成的枢轴表转换为数据格式

将由透视包生成的枢轴表转换为数据格式
EN

Stack Overflow用户
提问于 2019-06-01 20:19:56
回答 1查看 2.2K关注 0票数 2

我正试着用pivottabler包做一个枢轴表。我希望将透视表对象转换为dataframe,这样我就可以将它转换为数据表(使用DT),并在闪亮的应用程序中呈现它,这样它就可以下载。

代码语言:javascript
复制
library(pivottabler)
pt = qpvt(mtcars, 'cyl', 'vs', 'n()')

我试着把它转换成矩阵

代码语言:javascript
复制
as.data.frame(pt)

我收到了如下错误消息:

代码语言:javascript
复制
Error in as.data.frame.default(pt) : cannot coerce class ‘c("PivotTable", "R6")’ to a data.frame

有谁知道如何将透视表对象转换为dataframe?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-01 20:45:04

这是一个R6类。一种选择是使用asDataFrame提取,如果我们检查str,就可以显示出来。

代码语言:javascript
复制
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对象

代码语言:javascript
复制
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

代码语言:javascript
复制
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"   
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56410154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档