2016-06-02 2 views
2

Я получил эти данные:Преобразовать классов «tbl_df», «ТПС» и «data.frame в dataframe с R

> 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:[email protected]/f   /relations  /questions_reponses-best_of/;sessions::condition::ga:[email protected]/f/manger-bouger/q"| __truncated__ 

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

Я хочу, чтобы сделать сюжет с ggplot2, но я не могу получить доступ к данным в сегменте $ ? Можно ли преобразовать в dataframe?

+4

вы должны, скорее всего, 'unlist()' ваши вложенные столбцы в первую очередь. – mtoto

+0

Я подозреваю, что дополнительный отступ является ошибкой при воспроизведении здесь 'str()' и что здесь ничего нет. Обратите внимание на '5 переменных' на выходе' str() '. 'segment' находится в атрибуте, к которому необходимо обращаться через' attr() '. –

ответ

0

Если это точное воспроизведение на выходе из str() (и я не уверен, потому что users, sessions, pageviews, кажется, были отступ), то segments компонент на самом деле один из нескольких компонентов в списке, который является атрибутpageviews компонент.

Учитывая вышеизложенное правильно, то вы можете получить доступ к списку, содержащий segment компонент через:

attr(gaDataExt$pageviews, "query")$segment 

или

attr(gaDataExt[["pageviews"]], "query")$segment 

Если эти атрибуты фактически атрибуты tbl_df, а затем получить доступ к segments до

attr(gaDataExt, "query")$segment 

Я подозреваю, что вы хотите этого, так как атрибуты отображаются на tbl_df ubt вывод str() не ясен.

0

У меня была такая же проблема, пытаясь получить данные в knn, и это говорит мне, что подмножества неуловимого импорта не были одинаковой длины. Я закончил создание цикла for, чтобы сбрасывать каждый столбец в новый кадр данных один за другим. Новый фрейм данных был чистым.

мой код:

library(readr) 
#Import data to CancerData 
cancerData_raw <- read_csv("E:/R/TestDataSets/breast-cancer-wisconsin.data", col_names = FALSE) 
#clean data structure. This read is giving lots of errors and tbl, tbl_df, dataframe types 
cancerData <- data.frame(cancerData_raw[,1]) 
for (column in c(2:ncol(cancerData_raw))){ 
    print(column) 
    cancerData <- cbind(cancerData, cancerData_raw[,column]) 
} 

#comparing the structure of the old set vs copied one: 
str(cancerData_raw) 
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 699 obs. of 11 variables: 
#vs 
str(cancerData) 
'data.frame': 699 obs. of 11 variables: 

Я не уверен, если есть более простой способ сделать эту операцию. Это довольно ужасно неэффективно для работы на больших наборах.

+0

Просто используйте решение Rnoob. Мне нужен тип/класс dataframe. –

3
df = as.data.frame(gaDataExt) 

Простой как это.

Смежные вопросы