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

Tidy data

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

Data i "long format", vilket inte är "tidy data".

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

Tidy data med upprepade mätningar.

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 av pivot_longer().
  • spread() - transformerar data till brett format. Har ersatts av pivot_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.