2016-06-02 2 views
2

bekam ich diese Daten:Convert Klassen ‚tbl_df‘, ‚Tabl‘ und ‚data.frame in Datenrahmen mit 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 

Ich möchte ein Grundstück mit ggplot2 machen, aber ich kann die Daten in $ Segment zugreifen ? Kann ich in Dataframe konvertieren?

+4

sollten Sie Ihre verschachtelten Spalten wahrscheinlich zuerst "auflisten"(). – mtoto

+0

Ich vermute, dass der zusätzliche Einzug ein Fehler bei der Wiedergabe der 'str()' Ausgabe ist und dass hier überhaupt nichts geschachtelt ist. Beachten Sie die '5 Variablen' in der' str() 'Ausgabe. "segments" befindet sich in einem Attribut, auf das über 'attr()' zugegriffen werden muss. –

Antwort

0

Wenn die eine genaue Reproduktion der Ausgabe von str() (und ich bin nicht sicher, weil die users, sessions, pageviews worden zerklüftet erscheinen), dann die segments Komponente tatsächlich einen von mehreren Komponenten in einer Liste, die eine ist Attribut der pageviews Komponente.

Unter der Annahme, die oben richtig ist, dann können Sie die Liste Zugriff auf die segment Komponente über enthalten:

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

oder

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

Wenn diese Attribute tatsächlich Attribute des tbl_df sind, dann segments zugreifen über

attr(gaDataExt, "query")$segment 

Ich vermute, dass Sie dies wünschen, da die Attribute auf dem tbl_df Ubt erscheinen, ist der str() Ausgang nicht klar.

0

Ich hatte das gleiche Problem versucht, Daten in knn und es mir zu sagen, dass Teilmengen der wonky Import nicht die gleiche Länge waren. Am Ende habe ich eine for-Schleife erstellt, um jede Spalte einzeln in einen neuen Datenrahmen zu schreiben. Der neue Datenrahmen war sauber.

mein Code:

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: 

bin ich nicht sicher, ob es eine einfachere Art und Weise, dass der Betrieb zu tun. Dies ist ziemlich ineffizient, um auf größeren Sets zu laufen.

+0

Verwenden Sie einfach die Lösung von Rnoob. Ich habe den Dataframe Typ/Klasse, die ich brauchte. –

3
df = as.data.frame(gaDataExt) 

Einfach so.