#Einleitung Das Bundesarchiv beherbergt die in den zentralen Behörden des Deutschen Reiches, der DDR und der Bundesrepublik entstandenen Unterlagen und ist im Wesentlichen für deren Übernahme, Bewahrung und Zugänglichmachung verantwortlich.

Das Bundesarchiv hat zum 01.01.2024 ein neues Angebot zur Erstellung von Kopien von Archivgut für Externe eingeführt. Damit können Nutzer:innen die kostenfreie Digitalisierung von bis zu 10 Archivalien pro Benutzung beauftragen. Bei den kopierbaren Archivalien handelt es sich um Akten und Karteien. Großformate (Karten, Pläne und technische Zeichnungen) sowie fotografische und Filmmaterialien sind aus diversen Gründen derzeit noch vom Angebot ausgenommen.

Die Digitalisierungswerkstatt am Standort Berlin-Lichterfelde setzt die Aufträge für die Abteilungen BE, B, PA und SAPMO um. Diese sind für die Unterlagen des Deutschen Reiches (bis 1945) und der DDR (mit Ausnahme der militärischen Überlieferung, der Stsa-Unterlagen und der Unterlagen des Ministeriums für Auswärtige Angelegenheiten der DDR) zuständig. Neben den Aufträgen aus der Benutzung werden in Lichterfelde auch interne Aufträge aus den Fachabteilungen bearbeitet.

In der Digitalisierungswerkstatt wird eine Workflow-Software genutzt, bei der zu jeder Archivale der zu nutzende Ordnername vorgegeben wird. Der jeweilige Scan-Operator dokumentiert darüberhinaus die Anzahl der erstellten Digitalisate, das Scandatum und den genutzten Scanarbeitsplatz. Außerdem werden zu jedem Auftrag die zugehörigen Archivalien (über den Ordnernamen), das Auftragsdatum und die/der Auftraggebende nachgewiesen.

Die Daten wurden aus der Software als csv-Datei exportiert und in Excel mit folgenden Daten angereichert: 1) Zu jeder Archivale wurde die zuständige Abteilung händisch hinzugefügt. 2) Sowohl die Auftrags- als auch die Digitalisierungsdaten wurden mit einer Formel (=ISOKALENDERWOCHE) in die Kalenderwoche umgerechnet. Anschließend wurden die Spalten kopiert und als Wert wieder eingefügt. Die Dateien wurden anschließend erneut im Format csv gespeichert.

Die folgende Analyse soll eine Evaluation der Entwicklung der Scanaufträge im Vergleich zu den Digitalisierungskapazitäten nach den ersten sechs Monaten ermöglichen.

#Datenvorverarbeitung

##Laden der Libraries

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

##Datenimport

###Aufträge

library(readr)
auftraege <- read_delim("auftraege.csv", 
    delim = ";", escape_double = FALSE, col_types = cols(Auftrag = col_integer(), 
        Datum = col_date(format = "%d.%m.%Y"), 
        Woche = col_integer()), locale = locale(encoding = "ISO-8859-1"), 
    trim_ws = TRUE)

###Digitalisierung

library(readr)
digitalisierung <- read_delim("digitalisierung.csv", 
    delim = ";", escape_double = FALSE, col_types = cols(Auftrag = col_integer(), 
        Scandatum = col_date(format = "%d.%m.%Y"), 
        Woche = col_integer(), Umfang = col_integer()), 
    trim_ws = TRUE)

##Datentransformation Die Tabellen sehen gut aus. Im Datensatz “Aufträge” sind aber personenbezogene Informationen enthalten, die anonymisiert werden sollten.

#Lade die Bibliothek Digest
library(digest)
#Anonymisiere die Spalte Benutzer
auftraege$anon_ben <- sapply(auftraege$Benutzer, digest, algo = "sha256")
#Bevor ich die Spalte Benutzer lösche, möchte ich die internen Aufträge als solche dokumentieren.
#Ich filtere also in der Spalte Benutzer nach dem Wort intern
auftraege %>%
  filter(Benutzer == "intern") %>%
#und ersetze in der Spalte anon_ben den Hashwert durch das Wort "intern"
  mutate(anon_ben = "intern")

Anschließend werden die beiden Datensätze zusammengeführt und ein neuer Datensatz ohne Namen erzeugt.

#Dann verbinde ich die beiden Datensätze und erzeuge einen neuen mit dem Namen "dod_analyse"
dod_analyse <- digitalisierung %>%
  full_join(auftraege, by = "Ordner")
#und zeige mir den Kopf der Tabelle an, um zu prüfen, ob es funktioniert hat
head(dod_analyse)

Jetzt sehe ich, dass Archivalien digitalisiert wurden, für die kein Auftrag existiert. In den Auftrags-Spalten steht hier überall NA. Ich möchte in der Spalte anon_ben das NA durch “intern”, weil ich durch Vorwissen weiß, dass es sich hier um alte Aufträge handelt, die in den exportierten Daten nicht enthalten sind.

#Ich filtere also in der Spalte anon_ben nach NA
dod_analyse %>%
  filter(is.na(anon_ben))
dod_analyse %>%
#und ersetze in der Spalte anon_ben den Hashwert durch das Wort "intern"
  mutate(anon_ben = "intern")

Jetzt muss ich noch die Spalte Benutzer löschen, damit der Datensatz wirklich anonymisiert ist.

dod_analyse <- dod_analyse %>%
  select(-Benutzer)

Und wenn ich schon dabei bin: die Spalte “Auftrag.y” ist doppelt vorhanden und wird nicht benötigt.

dod_analyse <- dod_analyse %>%
  select(-Auftrag.y)

Um die Spaltenüberschriften verständlich zu halten, benenne ich noch die Spalten Woche.x, Woche.y und Datum um.

#Umbenennen:
dod_analyse <- dod_analyse %>%
  rename(Woche.Scan = Woche.x) %>%
  rename(Woche.Auft = Woche.y) %>%
  rename(Auft_Datum = Datum)
#und zeige mir den Kopf der Tabelle an, um zu prüfen, ob es funktioniert hat
head(dod_analyse)
#jetzt möchte ich den Dataframe noch in eine csv-Datei schreiben, um sie wirklich zu sichern.
write_csv(dod_analyse, "dod_analyse.csv")

Damit sind die Daten (hoffentlich) ausreichend bereinigt. Ich kann mit den Visualisierungen anfangen, um die Forschungsfragen zu beantworten.

#Forschungsfragen ##Wie hat sich die Auftragslage pro Woche entwickelt? Ich will zeigen, wie sich die Anzahl der Benutzer-Aufträge seit Einführung der DoD am 01.01.2024 bis Ende Juni 2024 entwickelt haben.

woche.auft_anz <- dod_analyse %>%
  group_by(Woche.Auft) %>%
  summarise(anz = n())
plot(woche.auft_anz$anz)

Da gibt es einen Ausreißer mit über 2000 Archivalien. Das kann nicht stimmen. Es sollten alle leeren Einträge herausgefiltert werden. Außerdem möchte ich die internen Aufträge herausfiltern, um nur die Entwicklung der Aufträge von Benutzenden zu zeigen.

#Es soll ein Liniendiagramm entstehen, dass die Anzahl der beauftragten Archivalien pro Woche zeigt.
#Dazu zähle die Aufträge je Kalenderwoche...
woche.auft_anz <- dod_analyse %>%
  filter(!is.na(Woche.Auft)) %>%
  filter(anon_ben != "intern") %>%
  group_by(Woche.Auft) %>%
  summarise(anz = n())
#...und stelle das als Liniendiagramm dar.
ggplot(woche.auft_anz, 
       aes(x = Woche.Auft, y = anz)) +
  geom_line(linetype=1, color="steelblue", linewidth=1) +
  geom_point(color="black")

  labs(x = "Kalenderwoche", 
       y = "Anzahl der Aufträge", 
       title = "beauftragte Archivalien pro KW")
## $x
## [1] "Kalenderwoche"
## 
## $y
## [1] "Anzahl der Aufträge"
## 
## $title
## [1] "beauftragte Archivalien pro KW"
## 
## attr(,"class")
## [1] "labels"

Man kann sehen, dass zwischen der 12. und 19. KW teilweise sehr hohe Auftragszahlen entstanden sind. Das ging aber in den letzten Juniwochen wieder zurück.Die Rücksprache mit dem Fachbereich hat ergeben, dass die Spitzen sich nicht auf ein plötzliches, sehr hohes Auftragsvolumen zurückzuführen sind, sondern auf einen krankheitsbedingten Rückstau in der Weitergabe der Aufträge. Dies ist auch an der Normalisierung der Zahlen ab der 20. Kalenderwoche ersichtlich.

Es ist also sinnvoll, für die weitere Betrachtung der Bedarfe einen mittleren Wert zugrunde zu legen. Um zu prüfen, ob der Mittelwert oder der Median sinnvoll sind, erstelle ich einen Boxplot der Auftragszahlen und lasse mir den Mittelwert und den Median ausgeben.

boxplot(woche.auft_anz$anz)

summary(woche.auft_anz$anz)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    80.0   125.0   158.0   168.8   183.2   299.0

##Ist absehbar, dass die Aufträge die Kapazitäten überschreiten?

#Hier sollte ein Liniendiagramm,  dass die Anzahl der erstellten und beauftragten Scans je Woche gegenüberstellt.
#Um das zu machen, muss zuerst: 
#die Anzahl der Ordner je Woche errechnet werden,
#und dann die durschnittliche Zahl der Scans je Ordner berechnet werden und anschließend
#die Anzahl der beauftragten Scans je Woche berechnet werden.