# Programvare: R version 4.3.2 (2023-10-31 ucrt)
install.packages("tidyverse")
library(tidyverse)
setwd("D:/temp/database-frukt")
getwd() # kontrollerer
# Datafil: "db_frukt_wide.csv:"
# Nr,Tittel,Dato,Stikkord1,Stikkord2,Stikkord3,Stikkord4
# 1,Epler,2002-01-01,Frukt,Rødt,Rundt,Hardt
# 2,Bananer,2003-01-01,Frukt,Gul,Avlang,Myk
# 3,Kiwi,2004-01-01,Frukt,Grønn,egg,Myk
data_wide <- readr::read_csv(file="db_frukt_wide.csv")
data_wide
# # A tibble: 3 × 7
# Nr Tittel Dato Stikkord1 Stikkord2 Stikkord3 Stikkord4
# <dbl> <chr> <date> <chr> <chr> <chr> <chr>
# 1 1 Epler 2002-01-01 Frukt Rødt Rundt Hardt
# 2 2 Bananer 2003-01-01 Frukt Gul Avlang Myk
# 3 3 Kiwi 2004-01-01 Frukt Grønn egg Myk
data_long <- data_wide %>%
tidyr::pivot_longer(
cols = c("Stikkord1", "Stikkord2", "Stikkord3", "Stikkord4"),
names_to = "Stikkord",
values_to = "Verdi"
)
data_long
# A tibble: 12 × 5
# Nr Tittel Dato Stikkord Verdi
# <dbl> <chr> <date> <chr> <chr>
# 1 1 Epler 2002-01-01 Stikkord1 Frukt
# 2 1 Epler 2002-01-01 Stikkord2 Rødt
# 3 1 Epler 2002-01-01 Stikkord3 Rundt
# 4 1 Epler 2002-01-01 Stikkord4 Hardt
# 5 2 Bananer 2003-01-01 Stikkord1 Frukt
# 6 2 Bananer 2003-01-01 Stikkord2 Gul
# 7 2 Bananer 2003-01-01 Stikkord3 Avlang
# 8 2 Bananer 2003-01-01 Stikkord4 Myk
# 9 3 Kiwi 2004-01-01 Stikkord1 Frukt
# 10 3 Kiwi 2004-01-01 Stikkord2 Grønn
# 11 3 Kiwi 2004-01-01 Stikkord3 egg
# 12 3 Kiwi 2004-01-01 Stikkord4 Myk
readr::write_excel_csv(data_long, "db_frukt_long.csv")
# For å gå tilbake fra lang- til bredformat bruker du funksjonen `pivot_longer()`:
data_long %>%
tidyr::pivot_wider(
names_from = "Stikkord",
values_from = "Verdi"
)
# # A tibble: 3 × 7
# Nr Tittel Dato Stikkord1 Stikkord2 Stikkord3 Stikkord4
# <dbl> <chr> <date> <chr> <chr> <chr> <chr>
# 1 1 Epler 2002-01-01 Frukt Rødt Rundt Hardt
# 2 2 Bananer 2003-01-01 Frukt Gul Avlang Myk
# 3 3 Kiwi 2004-01-01 Frukt Grønn egg Myk
Her er et eksempel på hvordan man kan gå fra mange kolonner og få rader (wide) til få kolonner og mange rader (long) i R.
Kan dette brukes i ditt tilfelle?