library(pxweb)
## pxweb 0.17.0: R tools for the PX-WEB API.
## https://github.com/ropengov/pxweb
library(ggplot2)
# API-länken till ekologiska livsmedel
url <- "https://api.scb.se/OV0104/v1/doris/sv/ssd/START/HA/HA0103/HA0103A/EkoLivs"

# Hämtar metadata
meta <- pxweb_get(url)

# Hämtar alla år automatiskt
alla_ar <- meta$variables[[3]]$values

# Skapar query med flera varugrupper + alla år
query <- list(
  "Varugrupp" = c("01.1.1", "01.1.4", "01.1.7"),  # bröd, mjölk, grönsaker
  "Tid" = alla_ar
)

# Hämtar data
data <- pxweb_get(url = "https://api.scb.se/OV0104/v1/doris/sv/ssd/START/HA/HA0103/HA0103A/EkoLivs", query = query)
## Warning: Missing mandatory variable(s): 'ContentsCode'. 
## All values are requested in query.
# Konvertera till data.frame
df <- as.data.frame(data, column.name.type = "text", variable.value.type = "text")
query <- list(
  "Varugrupp" = c("01.1.1", "01.1.4", "01.1.7"),
  "ContentsCode" = "HA0103A4",
  "Tid" = alla_ar
)
data <- pxweb_get(
  url = url,
  query = query
)
# data.frame
df <- as.data.frame(data, column.name.type = "text", variable.value.type = "text")

# Bearbeta data
colnames(df) <- c("varugrupp", "år", "försäljning")
df$år <- as.numeric(df$år)

#  Rita graf
ggplot(df, aes(x = år, y = försäljning, color = varugrupp, group = varugrupp)) +
  geom_line(linewidth = 1.2) +
  geom_point(size = 2) +
  labs(
    title = "Försäljning av ekologiska varor i Sverige (mnkr)",
    x = "År",
    y = "Mnkr",
    color = "Varugrupp"
  ) +
  theme_minimal()

write.csv2(df, "ekologisk_forsaljning.csv", row.names = FALSE, fileEncoding = "ISO-8859-1")

Jag har använt SCB:s öppna API tillsammans med pxweb-paketet i R för att hämta statistik över försäljning av ekologiska livsmedel i Sverige. Genom att endast ha API-länken till tabellen (EkoLivs) kunde jag läsa in metadata, identifiera variabeln “Varugrupp” samt tillgängliga årtal, och sedan bygga en förfrågan för att hämta data för bröd, mjölk och grönsaker under åren 2010, 2015 och 2020. Jag har också skapat en linjediagram för att visualisera försäljningen av dessa varor under de valda åren. Genom att använda pxweb-paketet kan vi enkelt hämta och bearbeta data från SCB:s API, vilket gör det möjligt att arbeta med stora datamängder på ett effektivt sätt. Detta visar hur man kan hämta extern statistik direkt från SCB utan att behöva ladda ner filer manuellt, vilket är viktigt för framtida arbete inom dataanalys och IT projekt.