Tidy data
En betydande del av all analys och forskning går åt för att förbereda data. Det är ovanligt att data kan beskrivas, visualiseras och analyseras direkt efter data importerats till R eller Python. Bearbetning av data kräver tid och ansträngning. I föregående kapitel diskuterades paketet dplyr som innehåller funktioner för att bearbeta innehållet i en data frame. I detta kapitel diskuteras paketet tidyr, med vilken en data frame struktureras. Målsättningen är att skapa tidy data, som i de allra flesta fall innebär att raderna innehåller observationer (exempelvis patienter) och kolumnerna innehåller information om observationerna (exempelvis kön, ålder, inkomst, etc). Den absoluta majoriteten av alla analyser kräver att data är i tidy format.
Den stora fördelen med att strukturera en data frame så att kolumner är variabler är att det möjliggör användning av vektoriserade funktioner. En vektoriserad funktion använder varje vektor som input för att göra beräkningar. Om du har svårt att förstå vad en vektoriserad funktion är så kan du bara konstatera att nästan alla funktioner i R är vektoriserade. I en data frame kan du betrakta en kolumn (variabel) som en vektor.
Exempel på data i tidy format
I nedanstående exempel är data i tidy format eftersom varje rad är en observation (person) och varje kolumn är en variabel som beskriver personen.
Namn | Ålder | Inkomst | Utbildning | Kolesterol |
---|---|---|---|---|
Adam | 45 | 324211 | Högskola | 4.5 |
Zara | 51 | 198765 | Grundskola | 7.6 |
Exempel på data som inte är i tidy format
I nedanstående exempel är data inte i tidy format eftersom variablerna och deras motsvarande värden specificeras i endast två kolumner (Variabel och Värde).
Namn | Variabel | Värde |
---|---|---|
Adam | Ålder | 45 |
Adam | Inkomst | 324211 |
Adam | Utbildning | Högskola |
Zara | Ålder | 51 |
Zara | Inkomst | 198765 |
Zara | Utbildning | Grundskola |
Det är inte nödvändigtvis fel att data är i long format. Ibland måste data vara i long format för att visualiseras eller analyseras.
Exempel på tidy data med upprepade mätningar
I nedanstående exempel är data också i tidy format eftersom varje rad är en observation (person) och varje kolumn är en variabel som beskriver personen, även om samma person återkommer på flera rader. Detta är ett exempel med upprepade mätningar på samma individ.
Namn | Ålder | Inkomst | Utbildning | Kolesterol |
---|---|---|---|---|
Adam | 45 | 324211 | Högskola | 4.5 |
Adam | 46 | 384211 | Högskola | 7.6 |
Adam | 47 | 412321 | Högskola | 5.1 |
Adam | 48 | 48921 | Högskola | 3.9 |
I tidyr finns funktioner som kastar om data så att det kan transformeras till olika format.
Exempel på funktioner i tidyr är som följer:
pivot_longer()
- transformerar data till långt format (long format).pivot_wider()
- transformerar data till brett format (wide format).gather()
- transformerar data till långt format. Har ersatts avpivot_longer()
.spread()
- transformerar data till långt format. Har ersatts avpivot_wider()
.unite()
- Sammanfogar kolumner.separate()
- Separerar innehållet i en kolumn till flera kolumner.nest()
,unnest()
,unnest_longer()
– Nest'ar data och unnest'ar data.expand()
,complete()
– expanderar data.