Wie lassen sich Daten am besten umformen / umstrukturieren?

12

Ich bin wissenschaftlicher Mitarbeiter für ein Labor (ehrenamtlich). Ich und eine kleine Gruppe wurden mit der Datenanalyse für einen Datensatz aus einer großen Studie beauftragt. Leider wurden die Daten mit einer Art Online-App gesammelt und nicht so programmiert, dass die Daten in der am besten verwendbaren Form ausgegeben wurden.

Die folgenden Bilder veranschaulichen das Grundproblem. Mir wurde gesagt, dass dies eine "Umformung" oder "Umstrukturierung" genannt wird.

Frage: Wie kann man am besten von Bild 1 zu Bild 2 mit einem großen Datensatz mit mehr als 10.000 Einträgen wechseln?

Dies ist ein Beispiel, die eigentliche Datei hat über 10k Einträge.  Ich habe eine Farbcodierung, um die Übersichtlichkeit zu verbessern

Dies ist, was alles umgewandelt werden muss.

Wilkoe
quelle
1
Bitte teilen Sie dies in zwei separate Fragen auf und geben Sie Beispieldaten an (Sie können Ihren Hintergrund auch weglassen, sofern dies nicht relevant ist). Grob gesagt, möchten Sie auf (1) eine Zuordnung finden und dann zusammenführen, um Nummern anzuhängen. (2) hängt stark von der Art der Manipulationen ab, die Sie durchführen möchten; beliebte R - Pakete für diese Art der Sache sind data.table, dplyr, plyr, und reshape2- ich empfehle Excel und Pivot - Tabellen , wenn möglich , vermieden werden .
Max Ghenis
Ich schätze, Ihre Probleme bei der Datenbereinigung sind umfangreicher, als in den allgemeinen Fragen, die Sie stellen, behandelt werden können. Vielleicht möchten Sie sich OpenRefine.org ansehen. Ein paar Videos und ein Download können Ihnen bei diesem Teil Ihrer Analyse sehr helfen.
John
3
Diese Frage ist anscheinend unbeantwortet, da es um die Bereinigung und Organisation von rudimentären Daten und nicht um Statistiken geht.
Nick Stauner
2
Ich würde sagen, dass dies kein Thema ist, da die Bereinigung Ihrer Daten, so "rudimentär" der Prozess auch sein mag, für deren Verwendung von entscheidender Bedeutung ist. Es ist Teil eines größeren Problems.
Shadowtalker
2
@ NickStauner, IIRC Ich habe dafür gestimmt, als "unklar / braucht mehr Informationen" zu schließen, nicht als Off-Topic. Es scheint mir, dass Datenbereinigung im Rahmen von Statistiken groß geschrieben wird, und obwohl ich erkenne, dass gute Leute anderer Meinung sein können, denke ich, dass solche Fragen zum Thema gehören können. Angenommen, wir haben ein Datenbereinigungs- Tag und die folgenden CV-Threads: 1 , 2 , 3 und 4 .
gung - Wiedereinsetzung von Monica

Antworten:

12

Wie ich in meinem Kommentar angemerkt habe , enthält die Frage nicht genügend Details, um eine echte Antwort zu formulieren. Da Sie Hilfe brauchen, um die richtigen Begriffe zu finden und Ihre Frage zu formulieren, kann ich kurz im Allgemeinen sprechen.

Der Begriff, den Sie suchen, ist Datenbereinigung . Dies ist der Prozess, bei dem rohe, schlecht formatierte (schmutzige) Daten für Analysen in Form gebracht werden. Das Ändern und Regularisieren von Formaten ("zwei" ) und das Reorganisieren von Zeilen und Spalten sind typische Datenbereinigungsaufgaben. 2

In gewissem Sinne kann die Datenbereinigung in jeder Software und mit Excel oder R durchgeführt werden. Beide Optionen haben Vor- und Nachteile:

  • Excel: Excel ist mit ziemlicher Sicherheit die häufigste Wahl für die Datenbereinigung (siehe R fortunes # 59 pdf ). Es wird auch von Statistikern als schlechte Wahl angesehen. Der Hauptgrund ist, dass es schwierig ist, sicherzustellen, dass Sie alles abgefangen haben oder dass Sie alles identisch behandelt haben, und dass es keine Aufzeichnungen über die vorgenommenen Änderungen gibt, sodass Sie diese Änderungen später nicht mehr wiederholen können. Der Vorteil der Verwendung von Excel ist, dass Sie leichter sehen können, was Sie gerade tun, und nicht viel wissen müssen, um Änderungen vorzunehmen. (Statistiker werden letzteres als zusätzliche Konvention betrachten .)
  • R: R erfordert eine steile Lernkurve. Wenn Sie mit R oder Programmieren nicht sehr vertraut sind, ist es frustrierend, wenn Sie es mit R versuchen. Wenn Sie dies jedoch jemals wieder tun müssen, ist das Lernen abgeschlossen Zeit gut verbracht. Die Möglichkeit, Ihren Code für die Bereinigung der Daten in R zu schreiben und zu speichern, verringert außerdem die oben aufgeführten Nachteile. Über die folgenden Links können Sie mit diesen Aufgaben in R beginnen:

    Sie können viele gute Informationen zu Stack Overflow erhalten :

    Quick-R ist auch eine wertvolle Ressource:

    Zahlen in den numerischen Modus versetzen:

    Eine weitere wertvolle Quelle, um mehr über R zu erfahren, ist die Statistik-Hilfeseite der UCLA :

    Schließlich können Sie mit dem guten alten Google immer eine Menge Informationen finden:

    • Diese Suche: Datenbereinigung in r ruft eine Reihe von Tutorials auf (von denen ich keines durchgearbeitet habe, FTR).

Update: Dies ist ein häufiges Problem in Bezug auf die Struktur Ihres Datensatzes, wenn Sie mehrere Messungen pro 'Lerneinheit' durchführen (in Ihrem Fall eine Person). Wenn Sie für jede Person eine Zeile haben, werden Ihre Daten als "breit" angegeben, aber dann haben Sie zum Beispiel zwangsläufig mehrere Spalten für Ihre Antwortvariable. Auf der anderen Seite können Sie nur eine Spalte für Ihre Antwortvariable haben (dies hat jedoch mehrere Zeilen pro Person zur Folge). In diesem Fall werden Ihre Daten als "lang" bezeichnet. Der Wechsel zwischen diesen beiden Formaten wird häufig als "Umformen" Ihrer Daten bezeichnet, insbesondere in der R-Welt.

  • Die Standard-R-Funktion hierfür ist ? Umformen . Auf der Hilfeseite der UCLA für Statistiken finden Sie eine Anleitung zur Verwendung reshape().
  • Viele Leute denken, dass reshapees schwierig ist, mit ihnen zu arbeiten. Hadley Wickham hat ein Paket namens reshape2 beigesteuert , das den Prozess vereinfachen soll. Hadley persönliche Website für reshape2 ist hier die Schnell-R Übersicht ist hier , und es gibt eine gut aussehende Tutorial hier .
  • Es gibt sehr viele Fragen zu SO zum Umformen von Daten. Bei den meisten von ihnen geht es darum, von weit nach lang zu gehen, denn das ist typisch für Datenanalysten. Ihre Frage geht es darum, von lang nach breit zu gehen, was viel seltener vorkommt, aber es gibt immer noch viele Themen, die Sie bei dieser Suche durchsehen können .
  • Wenn Sie dies unbedingt mit Excel versuchen möchten , gibt es einen Thread zum Schreiben eines VBA-Makros für Excel, um die Umformungsfunktionalität hier zu replizieren: Schmelzen / Umformen in Excel mit VBA?
gung - Wiedereinsetzung von Monica
quelle
2
Diese Frage und diese Antwort sind ein gutes Beispiel dafür, warum Programmierkenntnisse für so ziemlich jede Art von Forschung immer notwendiger werden. Ich werde eine ausführlichere Antwort auf diese Frage schreiben, die ich auch in meinem Blog posten werde, aber ich wollte diesen Kommentar einbauen, bevor ich ihn vergesse.
Shadowtalker
2
Ich stimme einigermaßen zu, aber "notwendig" und "jede Art von Forschung" geht ein bisschen weit. Viele Disziplinen beschäftigen sich nicht oft mit schmutzigen Daten, und viele führende Forscher mussten noch nie eine Programmiersprache anfassen.
Behacad
Wow, danke euch allen. Es wird ein bisschen dauern, bis ich all diese Informationen verarbeitet und integriert habe, die für mich sehr neu sind. Ein bisschen wie eine Meta-Tangente scheint es, als hätte ich meine Frage angespornt ... Stell dir vor, du bist in ein fremdes Land gesunken, ohne Kenntnisse der Sprache / Kultur, das bin ich und die Statistik. Ich schätze die Zeit, die Sie für Ihre Antworten aufgewendet haben.
Wilkoe
Ich habe eine Bearbeitung hinzugefügt, in der Hoffnung, meine ursprüngliche Frage zu klären, obwohl die Frage geschlossen zu sein scheint.
Wilkoe
Die Frage ist geschlossen, @ user48538, & diese Version ist leider offensichtlicher als die vorherige. Wenn Sie 10.000 Zeilen haben, möchten Sie dies definitiv nicht in Excel versuchen. Sie müssen wirklich R oder eine ähnliche Programmiersoftware verwenden. Der Name der spezifischen Operation ist, Ihren Datensatz von "lang" in "breit" umzugestalten. Ich werde ein paar weitere Links für Sie hinzufügen. Wenn Sie ein Freiwilliger im Grundstudium sind, mit wenig oder gar keinem Hintergrund in Statistiken oder Programmierung, war es außerdem höchst unverantwortlich, wer auch immer Ihnen diese Aufgabe zuweist, IMHO. Auf keinen Fall sollte dies Ihre Aufgabe sein.
gung - Wiedereinsetzung von Monica
0

Versuchen Sie Folgendes mit R:

> ddf
   sess_id user_id     quest  response
1        1       a       age        29
2        1       a satisfied  st_agree
3        1       a    gender      male
4        1       a     phone    iphone
5        2       a       age        29
6        2       a satisfied not_agree
7        2       a    gender    female
8        2       a     phone    iphone
9        3       b       age        29
10       3       b satisfied     agree
11       3       b    gender      male
12       3       b     phone   android
> 
> library(reshape2)
> dcast(ddf, sess_id+user_id ~ quest, value.var='response')
  sess_id user_id age gender   phone satisfied
1       1       a  29   male  iphone  st_agree
2       2       a  29 female  iphone not_agree
3       3       b  29   male android     agree
rnso
quelle
0

In Scala wird dies als "Explosions" -Operation bezeichnet und kann auf einem DataFrame ausgeführt werden. Wenn es sich bei Ihren Daten um ein Rdd handelt, konvertieren Sie zuerst per toDFBefehl in DataFrame und verwenden dann die .explodeMethode.

Lucas Roberts
quelle