knitr::opts_chunk$set(echo = TRUE)
Der durchschnittliche Verzehr aller Kornkammer Mitglieder im Zeitraum November 2015 bis September 2017 sieht wie folgt aus:
library(ggplot2) library(lubridate) library(dplyr) library(tidyr) library(DBI) library(RSQLite) #### load data #### path <- system.file("data", package = "foodstorage") files <- list.files(path) # filter all backups (files which end up with .BAK) backup <- files[which(stringr::str_detect(files, ".BAK$"))] appDB <- dbConnect(SQLite(), file.path(path, backup)) originalData <- dbGetQuery(appDB, ' SELECT strftime(\'%d/%m/%Y\',transactions.start/1000,\'unixepoch\') AS Tag, ROUND(SUM(transaction_products.quantity), 3) AS Menge, transaction_products.unit AS Einheit, ROUND(transaction_products.price, 2) AS Preis, transaction_products.title AS Produkt, ROUND(SUM(transaction_products.quantity * transaction_products.price), 3) AS Summe FROM transaction_products LEFT JOIN transactions ON transactions._id = transaction_products.transaction_id WHERE transactions.status IS \'final\' AND transaction_products.account_guid IS \'lager\' GROUP BY Tag, Produkt, Preis ORDER BY transactions.start ' ) dbDisconnect(appDB) kornDB <- files[which(stringr::str_detect(files, "kornInfo.sqlite"))] kornInfo <- dbConnect(SQLite(), file.path(path, kornDB)) originalInfos <- dbReadTable(kornInfo, "productInfo") dbDisconnect(kornInfo) rm(appDB, kornInfo) rm(backup, files, kornDB, path) #### data wrangling #### verzehr <- originalData %>% mutate(Tag = as.Date(Tag, format = "%d/%m/%Y", origin = "1970-01-01")) %>% filter(Menge < 0) %>% group_by(Tag) %>% summarise(Menge = abs(sum(Menge))) ggplot(verzehr, aes(x = Tag, y = Menge)) + geom_point() + stat_smooth() + ylab("verzehrte Menge [kg / L / St]") + xlab("Zeit")
Wie der Grafik zu entnehmen ist, wird die verzehrte Menge in Kilo, Liter und Stück zusammengerechnet angezeigt.
Und hier zur Übersicht der Verzehr in tabellarischer Form dargestellt, zusammengefasst pro Monat:
verzehrZusammengefasst <- verzehr %>% group_by(Jahr = year(Tag), Monat = month(Tag, label = T, abbr = F)) %>% summarise("Verzehr in Kilo" = abs(sum(Menge))) %>% ungroup() %>% spread(key = Jahr, value = `Verzehr in Kilo`) knitr::kable(verzehrZusammengefasst)
Teilt man den Verzehr nach Produktgruppen auf, zeigt sich folgendes Bild:
`` {r productgroups, echo = F, message = F}
library(foodstorage)
kornumsatz <- startupSettings(originalData, originalInfos)
verzehr <- kornumsatz %>%
filter(Menge < 0, Produktgruppe != "NI") %>%
group_by(Produktgruppe, Tag) %>%
summarise(Verzehr = abs(sum(Menge))) %>%
group_by(Jahr = year(Tag), Produktgruppe) %>%
summarise("Verzehr in Kilo" = abs(sum(Verzehr))) %>%
ungroup() %>%
spread(key = Jahr, value =
Verzehr in Kilo`)
knitr::kable(verzehr)
## Verzehr gemäß Lieferanten ``` {r deliverer, echo = F, message = F} verzehr <- kornumsatz %>% filter(Menge < 0, Lieferant != "NI") %>% mutate(Lieferant = replace(Lieferant, which(Lieferant == "St. Georgener Bauer"), "Biohof Lex"), Lieferant = replace(Lieferant, which(Lieferant == "Kaiserstühler Hof"), "Humberg Hof")) %>% group_by(Lieferant, Tag) %>% summarise(Verzehr = abs(sum(Menge))) %>% group_by(Jahr = year(Tag), Lieferant) %>% summarise(Verzehr = abs(sum(Verzehr))) %>% mutate(Verzehr = replace(Verzehr, which(Lieferant == "Hofgut Storzeln" & Jahr == 2016), 480), Verzehr = replace(Verzehr, which(Lieferant == "Hofgut Storzeln" & Jahr == 2017), 910)) %>% rename("Verzehr in Kilo" = Verzehr) %>% ungroup() %>% spread(key = Jahr, value = `Verzehr in Kilo`) knitr::kable(verzehr)
``` {r products, echo = F} products <- kornumsatz %>% filter(Menge < 0) %>% group_by(Produkt_Zusammenfassung, Jahr = year(Tag), Monat = month(Tag, label = T, abbr = F)) %>% summarise(Verzehr = abs(sum(Menge))) %>% ungroup() %>% spread(key = Jahr, value = Verzehr) %>% arrange(Produkt_Zusammenfassung)
knitr::kable(products) ```
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.