Superkort introduktion till datatabeller i R

Här följer en kort introduktion till hur vi kan arbeta med tabeller i R. Se även min kortkorta introduktion till R. I R så kan data vara arrangerad på många olika sätt. Tabeller är ett av dem.

1. I R kan vi spara tabeller i R-objekt. Ett R-objekt kan innehålla olika typer av information. Vi kan ha många R-objekt öppna samtidigt. För att redigera en specifik tabell i ett R-objekt måste vi hänvisa till det objekt där tabellen är sparad.

2. Det finns många funktioner för att importera data till R. Om du saknar en finess i en funktion, prova söka efter en annan funktion. Det finns till exempel funktioner för att hämta data från filer sparade på hårddisken eller direkt från databaser via internet (exempel här).

3. Varje R-objekt har en klass som beskriver objektet. tibble är en typ av objektklass för en typ av tabell. Det finns flera typer av tabellformat i R. För att använda tibble behöver vi paketet tibble som ingår i tidyverse. Installera och aktivera tidyverse så installeras och aktivieras även paketet tibble.
# Kör install.packages() en gång
install.packages("tidyverse")
# Kör library() varje gång vi startar om R
library("tidyverse")

4. Vissa funktioner placerar data direkt i en tibble-tabell. Vi kan även placera data i en tibble-tabell med hjälp av funktionerna as_tibble() och tibble(). Exempel:
# Skapa tabell med variabel x och y
min_tabell <- tibble(
x=c(32, 14, 5, 66),
y=c("a","a","b","b")
)

5. För att titta på tabellens innehåll kan vi använda följande funktioner och kommandon:

view(min_tabell)Visa tabellen
head(min_tabell, n=10)Visa första 10 raderna
tail(min_tabell, n=10)Visa sista 10 raderna
str(min_tabell)Visa objektets struktur
summary(min_tabell)Övergripande sammanfattning av variablerna

6. För att redigera kolumner och rader i en tabell kan vi använda paketet dplyr. Dplyr ingår i tidyverse. Punkterna nedan ger några exempel. Dessa funktioner fungerar på liknande sätt:
a) Första argumentet i funktionen är ett objekt med en tabell. Till exempel objektet min_tabell.
b) Därefter beskriver vi vad vi vill göra med tabellen.
c) Resultatet av funktionen blir också en tabell.

7. Vi kan byta namn på variabler med funktionen rename(). Exempel:
min_tabell %>% rename(nytt_variabelnamn = x, grupp = y)

Uppdatera tabellen i ett objekt genom att spara över det gamla objektet:
min_tabell <- min_tabell %>% rename(nytt_variabelnamn = x, grupp = y)

8. Välj kolumner i en tabell med select(). Exempel:
min_tabell %>% select(nytt_variabelnamn)

9. Välja observationer i en tabell med filter(). Exempel:
min_tabell %>% filter(grupp == "a")

I funktionen filter() använder vi logiska villkor. Dubbla likhetstecken == betyder i detta fall att variabeln grupp ska vara lika med a. Vi skriver med citattecken "a" för att markera att bokstaven a är en textsträng och inte till exempel ett R-objekt. Här är exempel på tecken vi kan använda för att skriva villkor:

==Lika med
> Större än
>= Större eller lika med
!= Inte lika med
& Och
|Eller

10. Sortera tabellen efter observationerna med arrange(). Exempel:
min_tabell %>% arrange(nytt_variabelnamn) # Från minsta till största
min_tabell %>% arrange(desc(nytt_variabelnamn)) # Från största till minsta

11. Ändra ordning på kolumnerna med relocate(). Exempel:
min_tabell %>% relocate(grupp)

12. Skapa och redigera variabler med mutate(). Exempel:
min_tabell %>% mutate(log_x = log(nytt_variabelnamn))

13. Redigera specifika observationer med if_else() eller case_when(). Funktionen if_else() har tre argument i exemplet nedan: ett villkor, värde som returneras om villkoret är sant, värde som returneras om villkoret är falskt.
min_tabell %>% mutate(nytt_variabelnamn = if_else( nytt_variabelnamn ==32 , 3 , x)

Med funktionen case_when() kan vi redigera med flera olika villkor. Det sista argumentet TRUE ~ nytt_variabelnamn innebär att resten av observationerna i variabeln lämnas orörda:
min_tabell %>%
mutate(nytt_variabelnamn = case_when(
nytt_variabelnamn ==32 ~ 3,
nytt_variabelnamn ==14 ~ 4,
TRUE ~ nytt_variabelnamn ) )

14. Gruppera observationer med group_by(). Exempel:
min_tabell %>%
group_by(grupp) %>%
mutate(summa_per_grupp = sum(nytt_variabelnamn))

15. För att sammanfoga två tabeller kan vi använda left_join(). Exempel:
tabell_1 <- tibble(person=c(1,2), age=c(10,20))
tabell_2 <- tibble(person=c(1,2), height=c(140,190))
tabell_1 %>% left_join(tabell_2)

Det finns även flera liknande funktioner för att sammanfoga tabeller. Se beskrivning här.

16. Ett annat bra paket för att arbeta med tabeller är tidyr, som också ingår i tidyverse. Två bra funktioner i tidyr: Rotera data på längden med pivot_longer(). Rotera data på bredden med pivot_wider(). Exempel:

min_tabell <- tibble(
a=c(32,14),
b=c(5,66) ) %>%
mutate(rad=row_number())

min_tabell %>%
pivot_longer(cols=a:b) %>%
pivot_wider(names_from=name, values_from=value)

17. För att lära dig mer kan du prova följande kommandon:
help(package="tidyr")
help(package="dplyr")
vignette("dplyr")
vignette("tidy-data")

Eller se vår lärobok R för samhällsvetare, där vi ger en mer utförlig beskrivning av det mesta ovan.

4 thoughts on “Superkort introduktion till datatabeller i R

Leave a comment