Qual è il modo migliore per rimodellare / ristrutturare i dati?


12

Sono un assistente di ricerca per un laboratorio (volontario). Io e un piccolo gruppo siamo stati incaricati dell'analisi dei dati per una serie di dati estratti da un ampio studio. Sfortunatamente i dati sono stati raccolti con un'app online di qualche tipo e non è stato programmato per produrre i dati nella forma più utilizzabile.

Le immagini seguenti illustrano il problema di base. Mi è stato detto che questo si chiama "Risagoma" o "Ristruttura".

Domanda: Qual è il processo migliore per passare dall'immagine 1 all'immagine 2 con un set di dati di grandi dimensioni con oltre 10k voci?

Questo è un esempio, il file effettivo ha oltre 10k voci.  Ho un codice colore per aiutare con chiarezza

Questo è ciò in cui tutto deve essere convertito.


1
Si prega di dividere questo in due domande separate e fornire dati di esempio (è anche possibile omettere il proprio background se non pertinente). All'incirca, su (1) vorrai trovare una mappatura e poi unire per allegare i numeri. (2) dipende fortemente dal tipo di manipolazioni che vorresti fare; pacchetti R popolari per questo tipo di cosa sono data.table, dplyr, plyre reshape2- vi consiglio di evitare Excel e tabelle pivot, se possibile.
Max Ghenis,

Immagino che i tuoi problemi di pulizia dei dati siano più estesi di quelli che possono essere coperti nei tipi di domande generali che stai ponendo. Potresti voler dare un'occhiata a OpenRefine.org. Alcuni video e un download potrebbero aiutarti molto con questa parte dell'analisi.
Giovanni,

3
Questa domanda sembra fuori tema perché riguarda la pulizia e l'organizzazione dei dati rudimentali, non le statistiche.
Nick Stauner,

2
Direi che non è fuori tema perché la pulizia dei dati, per quanto "rudimentale" come potrebbe essere il processo, è essenziale per usarli. Fa parte di un problema più ampio.
Shadowtalker,

2
@NickStauner, IIRC Ho votato per chiudere come "poco chiaro / necessita di maggiori informazioni", non come off-topic. Mi sembra che la pulizia dei dati rientri nell'ambito delle statistiche scritte in grande, e anche se riconosco che le persone buone non sono d'accordo, penso che tali domande possano essere in tema. Considera che abbiamo un tag di pulizia dei dati e questi thread CV: 1 , 2 , 3 e 4 .
gung - Ripristina Monica

Risposte:


12

Come ho notato nel mio commento , non ci sono abbastanza dettagli nella domanda da formulare una risposta reale. Dato che hai bisogno di aiuto anche per trovare i termini giusti e formulare la tua domanda, posso parlare brevemente in generale.

Il termine che stai cercando è pulizia dei dati . Questo è il processo per prendere dati grezzi, mal formattati (sporchi) e metterli in forma per le analisi. La modifica e la regolarizzazione dei formati ("due" ) e la riorganizzazione di righe e colonne sono attività tipiche di pulizia dei dati. 2

In un certo senso, la pulizia dei dati può essere eseguita in qualsiasi software e può essere eseguita con Excel o con R. Ci saranno pro e contro in entrambe le scelte:

  • Excel: Excel è quasi sicuramente la scelta più comune per la pulizia dei dati (vedi R fortunes # 59 pdf ). È anche considerata una cattiva scelta dagli statistici. Il motivo principale è che è difficile assicurarsi di aver catturato tutto o di aver trattato tutto in modo identico e che non vi siano registrazioni delle modifiche apportate, quindi non è possibile rivederle in seguito. L'aspetto positivo dell'utilizzo di Excel è che sarà più facile vedere cosa stai facendo e non devi sapere molto per apportare modifiche. (Statistici prenderà in considerazione quest'ultimo un ulteriore con .)
  • R: R richiederà una curva di apprendimento ripida. Se non hai molta familiarità con la R o la programmazione, le cose che possono essere fatte abbastanza rapidamente e facilmente in Excel saranno frustranti tentare in R. D'altra parte, se dovessi ripetere questa operazione, l'apprendimento sarà stato tempo ben speso. Inoltre, la possibilità di scrivere e salvare il codice per la pulizia dei dati in R allevia i contro sopra elencati. Di seguito sono riportati alcuni collegamenti che ti aiuteranno a iniziare con queste attività in R:

    Puoi ottenere molte buone informazioni su StackTranslate.it :

    Quick-R è anche una risorsa preziosa:

    Portare i numeri in modalità numerica:

    Un'altra preziosa fonte di informazioni su R è il sito Web di aiuto per le statistiche dell'UCLA :

    Infine, puoi sempre trovare molte informazioni con il buon vecchio Google:

    • Questa ricerca: pulizia dei dati in r , richiama una serie di tutorial (nessuno dei quali ho lavorato, FTR).

Aggiornamento: si tratta di un problema comune relativo alla struttura del set di dati in presenza di più misurazioni per "unità di studio" (nel tuo caso, una persona). Se hai una riga per ogni persona, i tuoi dati sono detti in formato 'largo', ma allora avrai necessariamente più colonne per la tua variabile di risposta, per esempio. D'altra parte, puoi avere solo una colonna per la tua variabile di risposta (ma di conseguenza più righe per persona, di conseguenza), nel qual caso i tuoi dati dovrebbero essere in forma 'lunga'. Spostarsi tra questi due formati è spesso chiamato "rimodellare" i tuoi dati, specialmente nel mondo R.

  • La funzione R standard per questo è ? Reshape . C'è una guida per l'uso reshape()sul sito Web della guida alle statistiche dell'UCLA.
  • Molte persone pensano che reshapesia difficile lavorare con. Hadley Wickham ha contribuito con un pacchetto chiamato reshape2 , che ha lo scopo di semplificare il processo. Sito personale di Hadley per reshape2 è qui , la Rapida panoramica-R è qui , e c'è un bel aspetto tutorial qui .
  • Ci sono molte domande su SO su come rimodellare i dati. La maggior parte di essi sta andando dall'ampio al lungo, perché in genere è quello che devono affrontare gli analisti di dati. La tua domanda è di andare da molto in lungo, il che è molto meno comune, ma ci sono ancora molti thread a riguardo, puoi guardarli attraverso questa ricerca .
  • Se il tuo cuore è pronto a provare a fare questo con Excel, c'è un thread sulla scrittura di una macro VBA per Excel per replicare qui la funzionalità di risagoma : fondere / riformulare in Excel usando VBA?

2
Questa domanda e questa risposta sono un ottimo esempio del perché l'alfabetizzazione alla programmazione è sempre più necessaria per qualsiasi tipo di ricerca. Scriverò una risposta più completa a questa domanda che pubblicherò anche sul mio blog, ma volevo ricevere questo commento prima di dimenticarmene.
Shadowtalker il

2
Concordo in una certa misura, ma "necessario" e "qualsiasi tipo di ricerca" sta andando un po 'lontano. Molte discipline spesso non si occupano di dati sporchi e molti importanti ricercatori non hanno mai avuto bisogno di toccare un linguaggio di programmazione.
Behacad,

Wow, grazie a tutti. Mi ci vorrà un po 'per elaborare e integrare tutte queste informazioni che sono molto nuove per me. Un po 'di una meta-tangente sembra che abbia stimolato la mia domanda ... Immagina di essere caduto in una terra straniera senza conoscenza della sua lingua / cultura, questo sono io e le statistiche. Apprezzo il tempo che hai dedicato alla tua risposta.
Wilkoe,

Ho aggiunto una modifica nella speranza di chiarire la mia domanda iniziale, anche se la domanda sembra essere chiusa.
Wilkoe,

La domanda è chiusa, @ user48538, e questa versione è più chiaramente fuori tema rispetto alla precedente, sfortunatamente. Se hai 10k righe, sicuramente non vuoi provare a farlo in Excel. Devi davvero usare R o un software di programmazione simile. Il nome dell'operazione specifica è quello di rimodellare il set di dati da "lungo" a "largo", aggiungerò altri collegamenti per te. Inoltre, se sei un volontario universitario, con poca o nessuna conoscenza delle statistiche o della programmazione, era altamente irresponsabile di chiunque ti assegnasse questo compito, IMHO. Non è possibile che questo sia il tuo compito.
gung - Ripristina Monica

0

Prova a seguire usando 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

0

In scala questa operazione viene chiamata operazione "esplosa" e può essere eseguita su un dataFrame. Se i tuoi dati sono rdd, devi prima convertirli in dataFrame tramite toDFcomando e quindi utilizzare il .explodemetodo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.