使用R将类'tbl_df','tbl'和'data.frame转换为数据帧

r t*_*aud 6 r dplyr

我得到了这些数据:

> str(gaDataExt)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   2 obs. of  5 variables:
 $ date          : POSIXct, format: "2016-05-24" "2016-05-31"
 $ deviceCategory: chr  "desktop" "desktop"
  $ users         : int  1 2
  $ sessions      : int  1 2
  $ pageviews     : int  11 85
  - attr(*, "profileInfo")=List of 6
   ..$ profileId            : chr "25439551"
   ..$ accountId            : chr "12543305"
   ..$ webPropertyId        : chr "UA-12543305-1"
   ..$ internalWebPropertyId: chr "26790206"
   ..$ profileName          : chr "www.ciao.ch"
   ..$ tableId              : chr "ga:25439551"
  - attr(*, "query")=List of 8
   ..$ start.date : chr "30daysAgo"
   ..$ end.date   : chr "yesterday"
   ..$ profileId  : chr "ga:25439551"
   ..$ dimensions : chr "ga:date,ga:deviceCategory"
   ..$ metrics    : chr  "ga:users" "ga:sessions" "ga:pageviews"
   ..$ segment    : chr "sessions::condition::ga:pagePath=@/f            /relations     /questions_reponses-best_of/;sessions::condition::ga:pagePath=@/f/manger-bouger/q"| __truncated__

   ..$ start.index: int 1
   ..$ max.results: int 10000
  - attr(*, "sampled")= logi FALSE
Run Code Online (Sandbox Code Playgroud)

我想用ggplot2制作一个情节但我无法访问$ segment中的数据?是否可以转换为数据帧?

Rno*_*oob 9

df = as.data.frame(gaDataExt)
Run Code Online (Sandbox Code Playgroud)

就那么简单.

  • 这可以更改顶级容器,但列仍然具有非基类,这可能会导致意外。 (2认同)

Rei*_*son 0

如果这是输出的准确再现str()(我不确定,因为users, sessions,pageviews似乎已缩进),那么该segments组件实际上是列表中的几个组件之一,该列表是该组件的属性pageviews

假设上述内容正确,那么您可以segment通过以下方式访问包含该组件的列表:

attr(gaDataExt$pageviews, "query")$segment
Run Code Online (Sandbox Code Playgroud)

或者

attr(gaDataExt[["pageviews"]], "query")$segment
Run Code Online (Sandbox Code Playgroud)

如果这些属性实际上是 的属性tbl_df,则segments通过

attr(gaDataExt, "query")$segment
Run Code Online (Sandbox Code Playgroud)

我怀疑你想要这个,因为属性似乎在 ubt 上,tbl_df输出str()不清楚。