Select Git revision
lies_aktuellen_stand.R
-
untergeekDE authoreduntergeekDE authored
lies_aktuellen_stand.R 5.54 KiB
library(readr)
library(lubridate)
library(tidyr)
library(stringr)
library(dplyr)
# lies_aktuellen_stand.R
#
# Enthält die Funktion zum Lesen der aktuellen Daten.
#---- Vorbereitung ----
# Statische Daten einlesen
# (das später durch ein schnelleres .rda ersetzen)
load ("index/index.rda")
# Konfiguration auslesen und in Variablen schreiben
config_df <- read_csv("index/config.csv")
for (i in c(1:nrow(config_df))) {
# Erzeuge neue Variablen mit den Namen und Werten aus der CSV
assign(config_df$name[i],
# Kann man den Wert auch als Zahl lesen?
# Fieses Regex sucht nach reiner Zahl oder Kommawerten.
# Keine Exponentialschreibweise!
ifelse(grepl("^[0-9]*\\.*[0-9]+$",config_df$value[i]),
# Ist eine Zahl - wandle um
as.numeric(config_df$value[i]),
# Keine Zahl - behalte den String
config_df$value[i]))
}
#---- Daten ins Archiv schreiben oder daraus lesen
archiviere <- function(df,a_directory = "daten/stimmbezirke") {
if (!dir.exists(a_directory)) {
dir.create(a_directory)
}
write_csv(df,
paste0(a_directory,"/",
# Zeitstempel isolieren und alle Doppelpunkte
# durch Bindestriche ersetzen
str_replace_all(df %>% pull(zeitstempel) %>% last(),
"\\:","_"),
".csv"))
}
hole_letztes_df <- function(a_directory = "daten/stimmbezirke") {
if (!dir.exists(a_directory)) return(tibble())
neuester_file <- list.files(a_directory, full.names=TRUE) %>%
file.info() %>%
# Legt eine Spalte namens path an
tibble::rownames_to_column(var = "path") %>%
arrange(desc(ctime)) %>%
head(1) %>%
# Pfad wieder rausziehen
pull(path)
if (length(neuester_file)==0) {
# Falls keine Daten archiviert, gibt leeres df zurück
return(tibble())
} else {
return(read_csv(neuester_file))
}
}
#---- Lese-Funktionen ----
lies_gebiet <- function(stand_url = stimmbezirke_url) {
ts <- now()
# Versuch Daten zu lesen - und gib ggf. Warnung oder Fehler zurück