Jaki jest najlepszy sposób na Przekształcenie / Restrukturyzację danych?


12

Jestem asystentem naukowym w laboratorium (wolontariusz). Ja i mała grupa zlecono mi analizę danych dla zestawu danych pobranych z dużego badania. Niestety dane zostały zebrane za pomocą jakiejś aplikacji online i nie została zaprogramowana do wyświetlania danych w najbardziej użytecznej formie.

Poniższe zdjęcia ilustrują podstawowy problem. Powiedziano mi, że nazywa się to „Przekształcaniem” lub „Restrukturyzacją”.

Pytanie: Jaki jest najlepszy proces przejścia od obrazu 1 do obrazu 2 z dużym zestawem danych z ponad 10 000 wpisów?

To jest przykład, rzeczywisty plik ma ponad 10 000 wpisów.  Mam oznaczone kolorami, aby pomóc w przejrzystości

Na to wszystko trzeba przekonwertować.


1
Podziel to na dwa osobne pytania i podaj przykładowe dane (możesz także pominąć swoje tło, jeśli nie jest to istotne). Z grubsza, w (1) będziesz chciał znaleźć mapowanie, a następnie scalić w celu dołączenia liczb. (2) zależy w dużym stopniu od rodzaju manipulacji, które chcesz wykonać; popularne pakiety R dla tego typu rzeczy to data.table, dplyr, plyr, i reshape2- Zalecam unikanie Excel i tabele przestawne, jeśli to możliwe.
Max Ghenis

Zgaduję, że twoje problemy z czyszczeniem danych są bardziej rozległe, niż mogą być ujęte w rodzajach ogólnych pytań, które zadajesz. Możesz zajrzeć na OpenRefine.org. Kilka filmów i pobieranie może bardzo pomóc w tej części analizy.
John

3
To pytanie wydaje się nie na temat, ponieważ dotyczy podstawowych danych i organizacji danych, a nie statystyk.
Nick Stauner

2
Powiedziałbym, że nie jest to nie na temat, ponieważ czyszczenie danych, jakkolwiek „podstawowe”, jak może być proces, jest niezbędne do jego wykorzystania. To część większego problemu.
shadowtalker

2
@NickStauner, IIRC Głosowałem za zamknięciem jako „niejasne / potrzebuje więcej informacji”, a nie nie na temat. Wydaje mi się, że czyszczenie danych wchodzi w zakres zapisywanych statystyk i chociaż zdaję sobie sprawę, że dobrzy ludzie mogą się nie zgadzać, myślę, że takie pytania mogą dotyczyć tematu. Weź pod uwagę, że mamy tag do czyszczenia danych i te wątki CV: 1 , 2 , 3 i 4 .
gung - Przywróć Monikę

Odpowiedzi:


12

Jak zauważyłem w moim komentarzu , pytanie nie zawiera wystarczających szczegółów, aby można było sformułować prawdziwą odpowiedź. Ponieważ potrzebujesz pomocy w znalezieniu właściwych warunków i sformułowaniu pytania, mogę krótko mówić w ogólności.

Termin, którego szukasz, to czyszczenie danych . Jest to proces pobierania surowych, źle sformatowanych (brudnych) danych i dostosowywania ich do analiz. Zmiana i normalizacja formatów („dwa” ) oraz reorganizacja wierszy i kolumn to typowe zadania czyszczenia danych. 2

W pewnym sensie czyszczenie danych można wykonać w dowolnym oprogramowaniu i można to zrobić za pomocą Excela lub R.Możliwe będą wady i zalety obu opcji:

  • Excel: Excel jest prawie na pewno najczęstszym wyborem do czyszczenia danych (patrz R fortuny # 59 pdf ). Statystycy uważają to również za zły wybór. Głównym powodem jest to, że trudno jest upewnić się, że wszystko złapałeś lub że wszystko potraktowałeś identycznie, i nie ma zapisów o wprowadzonych zmianach, więc nie możesz wrócić do tych zmian później. Zaletą korzystania z programu Excel jest to, że łatwiej będzie zobaczyć, co robisz, i nie musisz dużo wiedzieć, aby wprowadzać zmiany. (Statystycy uznają to drugie za dodatkową oszustwo ).
  • R: R będzie wymagał stromej krzywej uczenia się. Jeśli nie znasz się dobrze na R lub programowaniu, rzeczy, które można zrobić dość szybko i łatwo w Excelu, będą frustrujące, gdy spróbujesz w R. Z drugiej strony, jeśli kiedykolwiek będziesz musiał to zrobić ponownie, nauka będzie musiała dobrze spędzony czas. Ponadto możliwość pisania i zapisywania kodu do czyszczenia danych w języku R złagodzi wymienione wyżej wady. Poniżej znajdują się linki, które pomogą Ci rozpocząć pracę z tymi zadaniami w języku R:

    Możesz uzyskać wiele dobrych informacji na temat przepełnienia stosu :

    Quick-R jest również cennym zasobem:

    Wprowadzanie liczb w tryb numeryczny:

    Innym nieocenionym źródłem informacji na temat języka R jest witryna pomocy UCLA :

    Wreszcie, zawsze możesz znaleźć wiele informacji w starym dobrym Google:

    • To wyszukiwanie: czyszczenie danych wr , wywołuje szereg samouczków (z których żaden nie przepracowałem, FTR).

Aktualizacja: Jest to częsty problem dotyczący struktury zbioru danych, gdy masz wiele pomiarów na „jednostkę badawczą” (w twoim przypadku - osobę). Jeśli masz jeden wiersz dla każdej osoby, mówi się, że twoje dane są w formie „szerokiej”, ale wtedy koniecznie będziesz mieć na przykład wiele kolumn dla zmiennej odpowiedzi. Z drugiej strony możesz mieć tylko jedną kolumnę dla zmiennej odpowiedzi (ale w rezultacie mieć wiele wierszy na osobę), w którym to przypadku mówi się, że twoje dane są w „długiej” formie. Przechodzenie między tymi dwoma formatami jest często nazywane „przekształcaniem” danych, szczególnie w świecie R.

  • Standardową funkcją R jest w tym przypadku „zmiana kształtu” . Na stronie pomocy dotyczącej statystyk UCLA znajduje się przewodnik dotyczący korzystania reshape().
  • Wiele osób uważa, że reshapeciężko z tym pracować. Hadley Wickham opracował pakiet o nazwie reshape2 , który ma uprościć proces. Osobista strona Hadley za reshape2 jest tutaj , opis Quick-R jest tu , i tam jest miłym wyglądzie poradnik tutaj .
  • Istnieje wiele pytań na temat SO o tym, jak zmienić dane. Większość z nich polega na przechodzeniu od szerokiego do długiego, ponieważ zwykle z tym mają do czynienia analitycy danych. Twoje pytanie dotyczy przejścia z długiej na szeroką, co jest znacznie mniej powszechne, ale wciąż jest wiele wątków na ten temat, możesz przejrzeć je za pomocą tego wyszukiwania .
  • Jeśli twoje serce jest nastawione na próbę zrobienia tego za pomocą programu Excel, istnieje wątek na temat pisania makra VBA dla programu Excel w celu odtworzenia funkcji zmiany kształtu tutaj: stopić / zmienić kształt w programie Excel za pomocą VBA?

2
To pytanie i ta odpowiedź stanowią doskonałą ilustrację, dlaczego znajomość programowania jest coraz bardziej niezbędna w przypadku niemal każdego rodzaju badań. Zamierzam napisać pełniejszą odpowiedź na to pytanie, które również zamierzam opublikować na moim blogu, ale chciałem uzyskać ten komentarz, zanim zapomnę.
shadowtalker

2
Zgadzam się do pewnego stopnia, ale „konieczne” i „wszelkie badania” idą nieco dalej. Wiele dyscyplin często nie zajmuje się brudnymi danymi, a wielu wiodących badaczy nigdy nie musiało dotykać języka programowania.
Behacad

Wow, dziękuję wszystkim. Trochę zajmie mi przetworzenie i zintegrowanie wszystkich tych informacji, które są dla mnie bardzo nowe. Wydaje mi się, że trochę meta tangens pobudziłam moim pytaniem ... Wyobraź sobie, że wpadłeś do obcego kraju bez znajomości jego języka / kultury, to ja i statystyki. Doceniam czas, który wszyscy poświęciliście na udzielenie odpowiedzi.
Wilkoe

Dodałem edycję w celu wyjaśnienia mojego pierwszego pytania, choć wydaje się, że pytanie jest zamknięte.
Wilkoe

Pytanie jest zamknięte, @ user48538, a ta wersja jest niestety wyraźnie nie na temat niż poprzednia. Jeśli masz 10 000 wierszy, zdecydowanie nie chcesz tego robić w programie Excel. Naprawdę musisz użyć R lub podobnego oprogramowania do programowania. Nazwa konkretnej operacji polega na przekształceniu zestawu danych z „długiego” na „szeroki”, dodam jeszcze kilka linków. Ponadto, jeśli jesteś wolontariuszem licencjackim, z niewielkim lub zerowym doświadczeniem w statystykach lub programowaniu, było wysoce nieodpowiedzialne za to, kto powierzy ci to zadanie, IMHO. Nie ma mowy, żeby to było twoje zadanie.
gung - Przywróć Monikę

0

Spróbuj wykonać przy użyciu 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

W scali nazywa się to operacją „eksploduj” i można ją wykonać na ramce danych. Jeśli dane są typu rdd, najpierw przekonwertuj na dataFrame za pomocą toDFpolecenia, a następnie użyj .explodemetody.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.