Digitale Dokumentation in R zu Schauer 2025 ‘La Hoguette - Kultur, Phänomen, Subkultur?’

Abbildungen und Statistiken zu Kapitel 6.1.2.a - Datenkontrolle

Autor:in
Zugehörigkeiten

Michaela Schauer

Department für Kulturwissenschaften, Geschwister-Scholl-Platz 1, Ludwig-Maximilians-Universität München, München 80539, Deutschland

Naturhistorisches Museum Wien, Burgring 7, 1010 Wien, Österreich

Vienna Institute for Archaeological Science (VIAS), Universität Wien, Franz-Klein-Gasse 1, 1190 Wien, Österreich

Research Network Human Evolution und Archaeological Sciences (HEAS), Universität Wien, Djerassiplatz 1, 1030 Wien, Österreich

Veröffentlichungsdatum

25. Juli 2025

1 Einleitung

1.1 Inhalt

Dieses Skript dokumentiert die zu Kapitel 6.1.2.a - Schauer (2025) gehörenden Abbildungen und Statistiken:

1.2 Praktische Hinweise

1.2.1 Einführende Literatur

Um mit dem bereitgestellten R-Skript arbeiten zu können, werden die wichtigsten praktischen Schritte, die für den Einstieg erforderlich sind, kurz erklärt. Dies ersetzt jedoch nicht das Studium des Programms selbst und der Inhalte der Skripte.

Siegmund (2020) wird als Grundlage in deutscher Sprache empfohlen, als Einführung in das R-Plugin Quarto seine Anleitung Siegmund (2023). Auf Englisch ist die R Quarto-Website besonders zu empfehlen.

Field, A. u. a. (2013) ist lesenswert, unterhaltsam und enthält alle relevanten Informationen für den Einstieg. Das R Core Team bietet eine regelmäßig aktualisierte Einführung an; die aktuelle Version ist hier zu finden.

1.2.2 R, R Studio und R Quarto

R, auch R Console oder RGUI, ist das „reine“ R, d. h. es arbeitet ausschließlich mit Code. RStudio hingegen verfügt über eine Benutzeroberfläche und greift auf R zu.

Dieses R-Skript wurde in RStudio in Verbindung mit Quarto erstellt – einer R-spezifischen Schreibumgebung, die die Handhabung von Code sowohl bei der Entwicklung als auch bei der Veröffentlichung erheblich vereinfacht. Quarto ermöglicht es, einzelne R-Skripte in Form von Quarto-Dateien (.qmd) zu erstellen und in verschiedene andere Formate (.html, .pdf) zu exportieren. Neben dem „reinen“ R-Code können auch zusätzliche Informationen zu den Code-Modulen bereitgestellt werden.

Quarto-Dokumente enthalten ausführbaren R-Code, d. h. sie wurden entwickelt und umfangreich getestet, um die gewünschten Berechnungen fehlerfrei durchzuführen. Werden die Quarto-Dateien in RStudio geöffnet, sind die Code-Blöcke grau hinterlegt und können automatisch ausgeführt werden. Weitere Informationen zu Quarto und Quarto-Code finden sich hier.

Um mit diesem Skript zu arbeiten, wird empfohlen, R und RStudio, sowie R Quarto zu installieren.

1.2.3 R Projekte

Um sicherzustellen, dass die Berechnungen reibungslos ablaufen, wurde das Skript in ein R-Projekt eingebettet. Die R-Projektdatei (.Rproj) befindet sich im übergeordneten Ordner der Berechnungen und kann durch Doppelklicken geöffnet werden. Der Dateipfad wird über die Position dieser Datei definiert, sodass das gesamte Projekt beliebig gespeichert werden kann – vorausgesetzt, die Daten befinden sich in den vorgegebenen Ordnern. Die einzige Voraussetzung ist, dass der unter Kapitel 3 hinterlegte Code-Schnipsel beim ersten Arbeiten mit diesem Skript ausgeführt wird.

Ein weiterer Vorteil von R-Projekten ist, dass alle Quarto-Dateien, die beim letzten Schließen geöffnet waren, direkt beim Öffnen des Projekts wieder geladen werden – es muss also nicht manuell nach der Dateistruktur gesucht werden.

1.2.4 R Pakete

R-Pakete müssen zunächst installiert und anschließend in jeder Sitzung erneut geladen werden siehe auch 2, um die Berechnungen auszuführen. Sie enthalten Funktionen, die für bestimmte Analysen erforderlich sind. Zum Installieren kann der folgende Code verwendet werden:

  • install.packages(“Paket-Name”)

Die Pakete werden mit folgendem Befehl geladen:

  • library(Paket-Name)

Eine kurze Einführung in grundlegende R-Befehle findet sich beispielsweise auch hier.

1.3 Skript & Packages

Dieses Quarto-Skript (R Quarto v. 1.5.55) (Allaire u. a. 2024) wurde mit R v. 4.4.1 (R Core Team 2024) und RStudio v. 2024.04.2 (RStudio Team 2024) erstellt. Es werden folgende R-Pakete verwendet:

Vor Beginn der Analysen müssen sowohl alle Pakete (siehe Kapitel 2) geladen als auch das Working Directory gesetzt werden (siehe Kapitel 3).

Der Code ist lauffähig, d. h. er kann fehlerfrei ausgeführt werden, sofern die vorgegebene Datenstruktur beibehalten wird.

In jedem Code-Block wird der Code zur Erstellung der jeweils ersten Abbildung erläutert – nachfolgende Grafiken mit vergleichbarem Code erhalten keine eigene Beschreibung.

1.4 Gerät und Messparameter

Die Messdaten wurden mit dem Niton XL3t (Nr. 97390) des Departments für Kulturwissenschaften der Universität München im TestAllGeo-Modus ermittelt (60 Sekunden Standard, Niedrig, Hoch sowie 120 Sekunden Leicht-Modus) und mit einem 8 mm Messspot von M. Schauer durchgeführt. Die Messungen fanden von September bis Dezember 2018 sowie von September 2019 bis Juli 2020 statt. Weitere Informationen finden sich in Kapitel 6.1.1 – Schauer (2025).

2 Packages

library(car)
library(dplyr)
library(RcmdrMisc)
library(Rcmdr)
library(ggplot2)
library(ggpubr)
library(reshape2)

3 Working directory

knitr::opts_knit$set(root.dir = "./")

4 Abb. 6-3 - Statistik

4.1 Berechnen der Kennwwerte

# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_SdAR-M2_Daten.csv")

# Ausschluss nicht relevanter Spalten
data<- data1[, -c(1:4)]

# Definition der Formeln Variationskoeffizient, statistischen Fehler, Ober- und Untergrenze
Varkoef <- function(x){(sd(x)/mean(x))*100}
StatF<-function(x){(sd(x)/sqrt(11))}
OG<-function(x){(mean(x)+sd(x))}
UG<-function(x){(mean(x)-sd(x))}

# Berechnung der Kennzahlen für die ausgewählten Spalten
NominalSdARM2<-(data)%>%summarize_all(list(MW=mean,Sd=sd,StatF=StatF,
                                      Varkoef=Varkoef,OG=OG,UG=UG,MD=median))

4.2 Zusammenstellen und Exportieren der Daten

# Definieren des Dataframes der die Elementbezeichnungen enthält
Element<-c("Si","Ti","Al","Fe","Mn","Mg","Ca","K","P","S","Cl","V","Cr","Ni",
  "Cu","Zn","As","Se","Rb","Sr","Y","Zr","Nb","Mo","Ag","Sn","Sb","Cs","Ba",
  "La","Pb","Th","Bal")

# Einfügen des Präfix "_" in den Spaltennamen
cleanColumnNames <- function(df, prefix) {
  colnames(df) <- gsub(paste0(prefix, "_"), "", colnames(df))
  return(df)
}

Tab_1 <- rbind( # Kombinieren mehrerer Dataframes
 NominalSdARM2 %>% select(Si_MW, Si_MD, Si_Sd, Si_StatF, Si_Varkoef, Si_OG, Si_UG, # Auswahl relevanter Spalten
                Si_Error_MW, Si_Error_MD, Si_Error_Sd) %>% cleanColumnNames("Si"), # Entfernen des Elementnames (z.B. "Si") aus den Spaltennamen
  NominalSdARM2 %>% select(Ti_MW, Ti_MD, Ti_Sd, Ti_StatF, Ti_Varkoef, Ti_OG, Ti_UG, 
                Ti_Error_MW, Ti_Error_MD, Ti_Error_Sd) %>% cleanColumnNames("Ti"),
  NominalSdARM2 %>% select(Al_MW, Al_MD, Al_Sd, Al_StatF, Al_Varkoef, Al_OG, Al_UG, 
                Al_Error_MW, Al_Error_MD, Al_Error_Sd) %>% cleanColumnNames("Al"),
  NominalSdARM2 %>% select(Fe_MW, Fe_MD, Fe_Sd, Fe_StatF, Fe_Varkoef, Fe_OG, Fe_UG, 
                Fe_Error_MW, Fe_Error_MD, Fe_Error_Sd) %>% cleanColumnNames("Fe"),
  NominalSdARM2 %>% select(Mn_MW, Mn_MD, Mn_Sd, Mn_StatF, Mn_Varkoef, Mn_OG, Mn_UG, 
                Mn_Error_MW, Mn_Error_MD, Mn_Error_Sd) %>% cleanColumnNames("Mn"),
  NominalSdARM2 %>% select(Mg_MW, Mg_MD, Mg_Sd, Mg_StatF, Mg_Varkoef, Mg_OG, Mg_UG, 
                Mg_Error_MW, Mg_Error_MD, Mg_Error_Sd) %>% cleanColumnNames("Mg"),
  NominalSdARM2 %>% select(Ca_MW, Ca_MD, Ca_Sd, Ca_StatF, Ca_Varkoef, Ca_OG, Ca_UG, 
                Ca_Error_MW, Ca_Error_MD, Ca_Error_Sd) %>% cleanColumnNames("Ca"),
  NominalSdARM2 %>% select(K_MW, K_MD, K_Sd, K_StatF, K_Varkoef, K_OG, K_UG, 
                K_Error_MW, K_Error_MD, K_Error_Sd) %>% cleanColumnNames("K"),
  NominalSdARM2 %>% select(P_MW, P_MD, P_Sd, P_StatF, P_Varkoef, P_OG, P_UG, 
                P_Error_MW, P_Error_MD, P_Error_Sd) %>% cleanColumnNames("P"))

Cl <- NominalSdARM2 %>% select(Cl_MW, Cl_MD, Cl_Sd, Cl_StatF, Cl_Varkoef, Cl_OG, 
        Cl_UG, Cl_Error_MW, Cl_Error_MD, Cl_Error_Sd) %>% cleanColumnNames("Cl")

S<-NominalSdARM2 %>% select(S_MW, S_MD, S_Sd, S_StatF, S_Varkoef, S_OG, S_UG,
                            S_Error_MW, S_Error_MD, S_Error_Sd)
  colClean <- function(x){ colnames(x) <- gsub("S_", "", colnames(x)); x }
  S <- colClean(S) 

V<-NominalSdARM2 %>% select(V_MW, V_MD, V_Sd, V_StatF, V_Varkoef, V_OG, V_UG, 
                            V_Error_MW, V_Error_MD, V_Error_Sd) 
  colClean <- function(x){ colnames(x) <- gsub("V_", "", colnames(x)); x }
  V <- colClean(V) 

Tab_2 <- rbind(
  NominalSdARM2 %>% select(Cr_MW, Cr_MD, Cr_Sd, Cr_StatF, Cr_Varkoef, Cr_OG, Cr_UG, 
                  Cr_Error_MW, Cr_Error_MD, Cr_Error_Sd) %>% cleanColumnNames("Cr"),
  NominalSdARM2 %>% select(Ni_MW, Ni_MD, Ni_Sd, Ni_StatF, Ni_Varkoef, Ni_OG, Ni_UG, 
                  Ni_Error_MW, Ni_Error_MD, Ni_Error_Sd) %>% cleanColumnNames("Ni"),
  NominalSdARM2 %>% select(Cu_MW, Cu_MD, Cu_Sd, Cu_StatF, Cu_Varkoef, Cu_OG, Cu_UG, 
                  Cu_Error_MW, Cu_Error_MD, Cu_Error_Sd) %>% cleanColumnNames("Cu"),
  NominalSdARM2 %>% select(Zn_MW, Zn_MD, Zn_Sd, Zn_StatF, Zn_Varkoef, Zn_OG, Zn_UG, 
                  Zn_Error_MW, Zn_Error_MD, Zn_Error_Sd) %>% cleanColumnNames("Zn"),
  NominalSdARM2 %>% select(As_MW, As_MD, As_Sd, As_StatF, As_Varkoef, As_OG, As_UG, 
                  As_Error_MW, As_Error_MD, As_Error_Sd) %>% cleanColumnNames("As"),
  NominalSdARM2 %>% select(Se_MW, Se_MD, Se_Sd, Se_StatF, Se_Varkoef, Se_OG, Se_UG,
                  Se_Error_MW, Se_Error_MD, Se_Error_Sd) %>% cleanColumnNames("Se"),
  NominalSdARM2 %>% select(Rb_MW, Rb_MD, Rb_Sd, Rb_StatF, Rb_Varkoef, Rb_OG, Rb_UG,
                  Rb_Error_MW, Rb_Error_MD, Rb_Error_Sd) %>% cleanColumnNames("Rb"),
  NominalSdARM2 %>% select(Sr_MW, Sr_MD, Sr_Sd, Sr_StatF, Sr_Varkoef, Sr_OG, Sr_UG, 
                  Sr_Error_MW, Sr_Error_MD, Sr_Error_Sd) %>% cleanColumnNames("Sr"),
   NominalSdARM2 %>% select(Y_MW, Y_MD, Y_Sd, Y_StatF, Y_Varkoef, Y_OG, Y_UG, Y_Error_MW,
                  Y_Error_MD, Y_Error_Sd) %>% cleanColumnNames("Y"),
  NominalSdARM2 %>% select(Zr_MW, Zr_MD, Zr_Sd, Zr_StatF, Zr_Varkoef, Zr_OG, Zr_UG,
                  Zr_Error_MW, Zr_Error_MD, Zr_Error_Sd) %>% cleanColumnNames("Zr"),
  NominalSdARM2 %>% select(Nb_MW, Nb_MD, Nb_Sd, Nb_StatF, Nb_Varkoef, Nb_OG, Nb_UG, 
                  Nb_Error_MW, Nb_Error_MD, Nb_Error_Sd) %>% cleanColumnNames("Nb"),
  NominalSdARM2 %>% select(Mo_MW, Mo_MD, Mo_Sd, Mo_StatF, Mo_Varkoef, Mo_OG, Mo_UG, 
                  Mo_Error_MW, Mo_Error_MD, Mo_Error_Sd) %>% cleanColumnNames("Mo"),
  NominalSdARM2 %>% select(Ag_MW, Ag_MD, Ag_Sd, Ag_StatF, Ag_Varkoef, Ag_OG, Ag_UG, 
                  Ag_Error_MW, Ag_Error_MD, Ag_Error_Sd) %>% cleanColumnNames("Ag"),
  NominalSdARM2 %>% select(Sn_MW, Sn_MD, Sn_Sd, Sn_StatF, Sn_Varkoef, Sn_OG, Sn_UG, 
                  Sn_Error_MW, Sn_Error_MD, Sn_Error_Sd) %>% cleanColumnNames("Sn"),
  NominalSdARM2 %>% select(Sb_MW, Sb_MD, Sb_Sd, Sb_StatF, Sb_Varkoef, Sb_OG, Sb_UG, 
                  Sb_Error_MW, Sb_Error_MD, Sb_Error_Sd) %>% cleanColumnNames("Sb"),
  NominalSdARM2 %>% select(Cs_MW, Cs_MD, Cs_Sd, Cs_StatF, Cs_Varkoef, Cs_OG, Cs_UG, 
                  Cs_Error_MW, Cs_Error_MD, Cs_Error_Sd) %>% cleanColumnNames("Cs"),
  NominalSdARM2 %>% select(Ba_MW, Ba_MD, Ba_Sd, Ba_StatF, Ba_Varkoef, Ba_OG, Ba_UG, 
                  Ba_Error_MW, Ba_Error_MD, Ba_Error_Sd) %>% cleanColumnNames("Ba"),
 NominalSdARM2 %>% select(La_MW, La_MD, La_Sd, La_StatF, La_Varkoef, La_OG, La_UG, 
                  La_Error_MW, La_Error_MD, La_Error_Sd) %>% cleanColumnNames("La"),
  NominalSdARM2 %>% select(Pb_MW, Pb_MD, Pb_Sd, Pb_StatF, Pb_Varkoef, Pb_OG, Pb_UG, 
                  Pb_Error_MW, Pb_Error_MD, Pb_Error_Sd) %>% cleanColumnNames("Pb"),
  NominalSdARM2 %>% select(Th_MW, Th_MD, Th_Sd, Th_StatF, Th_Varkoef, Th_OG, Th_UG, 
                  Th_Error_MW, Th_Error_MD, Th_Error_Sd) %>% cleanColumnNames("Th"),
  NominalSdARM2 %>% select(Bal_MW, Bal_MD, Bal_Sd, Bal_StatF, Bal_Varkoef, Bal_OG, 
        Bal_UG, Bal_Error_MW, Bal_Error_MD, Bal_Error_Sd)%>% cleanColumnNames("Bal")
)

# Kombinieren mehrerer Dataframes
Tab3 <- rbind(Tab_1,Cl,S,V,Tab_2)

# Aneinanderreihen mehrerer Dataframes
Tab4<- cbind(Element,Tab3)

# Runden ausgewählter Spalten auf glatte Zahlen
Tab4[, c(2:5, 7:11)] <- round(Tab4[, c(2:5, 7:11)])

# Runden des Variationskoeffizienten auf 2 Dezimalstellen
Tab4$Varkoef<-round(Tab4$Varkoef,2)

# Speichern als CSV
write.csv(Tab4,"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//NominalSdARM2.csv",row.names=FALSE)

5 Abb. 6-4 - Statistik

5.1 Berechnen der Kennwwerte

# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_2709a_Daten.csv")

# Ausschluss nicht relevanter Spalten
data<- data1[, -c(1:4)]

# Definition der Formeln Variationskoeffizient, statistischen Fehler, Ober- und Untergrenze
Varkoef <- function(x){(sd(x)/mean(x))*100}
StatF<-function(x){(sd(x)/sqrt(11))}
OG<-function(x){(mean(x)+sd(x))}
UG<-function(x){(mean(x)-sd(x))}

# Berechnung der Kennzahlen für die ausgewählten Spalten
NominalSdARM2<-(data)%>%summarize_all(list(MW=mean,Sd=sd,StatF=StatF,
                                        Varkoef=Varkoef,OG=OG,UG=UG,MD=median))

5.2 Zusammenstellen und Exportieren der Daten

# Auswahl der Variablen
Element<-c("Si","Ti","Al","Fe","Mn","Mg","Ca","K","P","S","Cl","V","Cr","Ni",
           "Cu","Zn","As","Se","Rb","Sr","Y","Zr","Nb","Mo","Ag","Sn","Sb",
           "Cs","Ba","La","Ce","Pb","Th","Bal")

# Einfügen des Präfix "_" in den Spaltennamen
cleanColumnNames <- function(df, prefix) {
  colnames(df) <- gsub(paste0(prefix, "_"), "", colnames(df))
  return(df)
}

Tab_1 <- rbind(# Kombinieren mehrerer Dataframes
 NominalSdARM2 %>% select(Si_MW, Si_MD, Si_Sd, Si_StatF, Si_Varkoef, Si_OG, Si_UG, # Auswahl relevanter Spalten
                Si_Error_MW, Si_Error_MD, Si_Error_Sd) %>% cleanColumnNames("Si"), # Entfernen des Elementnames (z.B. "Si") aus den Spaltennamen
  NominalSdARM2 %>% select(Ti_MW, Ti_MD, Ti_Sd, Ti_StatF, Ti_Varkoef, Ti_OG, Ti_UG, 
                Ti_Error_MW, Ti_Error_MD, Ti_Error_Sd) %>% cleanColumnNames("Ti"),
  NominalSdARM2 %>% select(Al_MW, Al_MD, Al_Sd, Al_StatF, Al_Varkoef, Al_OG, Al_UG, 
                Al_Error_MW, Al_Error_MD, Al_Error_Sd) %>% cleanColumnNames("Al"),
  NominalSdARM2 %>% select(Fe_MW, Fe_MD, Fe_Sd, Fe_StatF, Fe_Varkoef, Fe_OG, Fe_UG, 
                Fe_Error_MW, Fe_Error_MD, Fe_Error_Sd) %>% cleanColumnNames("Fe"),
  NominalSdARM2 %>% select(Mn_MW, Mn_MD, Mn_Sd, Mn_StatF, Mn_Varkoef, Mn_OG, Mn_UG, 
                Mn_Error_MW, Mn_Error_MD, Mn_Error_Sd) %>% cleanColumnNames("Mn"),
  NominalSdARM2 %>% select(Mg_MW, Mg_MD, Mg_Sd, Mg_StatF, Mg_Varkoef, Mg_OG, Mg_UG, 
                Mg_Error_MW, Mg_Error_MD, Mg_Error_Sd) %>% cleanColumnNames("Mg"),
  NominalSdARM2 %>% select(Ca_MW, Ca_MD, Ca_Sd, Ca_StatF, Ca_Varkoef, Ca_OG, Ca_UG, 
                Ca_Error_MW, Ca_Error_MD, Ca_Error_Sd) %>% cleanColumnNames("Ca"),
  NominalSdARM2 %>% select(K_MW, K_MD, K_Sd, K_StatF, K_Varkoef, K_OG, K_UG,
                K_Error_MW, K_Error_MD, K_Error_Sd) %>% cleanColumnNames("K"),
  NominalSdARM2 %>% select(P_MW, P_MD, P_Sd, P_StatF, P_Varkoef, P_OG, P_UG, 
                P_Error_MW, P_Error_MD, P_Error_Sd) %>% cleanColumnNames("P"))

Cl <- NominalSdARM2 %>% select(Cl_MW, Cl_MD, Cl_Sd, Cl_StatF, Cl_Varkoef, Cl_OG,
        Cl_UG, Cl_Error_MW, Cl_Error_MD, Cl_Error_Sd) %>% cleanColumnNames("Cl")

S<-NominalSdARM2 %>% select(S_MW, S_MD, S_Sd, S_StatF, S_Varkoef, S_OG, S_UG, 
                            S_Error_MW, S_Error_MD, S_Error_Sd)

colClean <- function(x){ colnames(x) <- gsub("S_", "", colnames(x)); x }
S <- colClean(S) 

V<-NominalSdARM2 %>% select(V_MW, V_MD, V_Sd, V_StatF, V_Varkoef, V_OG, V_UG, 
                            V_Error_MW, V_Error_MD, V_Error_Sd) 

colClean <- function(x){ colnames(x) <- gsub("V_", "", colnames(x)); x }
V <- colClean(V) 

Tab_2 <- rbind(
  NominalSdARM2 %>% select(Cr_MW, Cr_MD, Cr_Sd, Cr_StatF, Cr_Varkoef, Cr_OG, Cr_UG, 
                Cr_Error_MW, Cr_Error_MD, Cr_Error_Sd) %>% cleanColumnNames("Cr"),
  NominalSdARM2 %>% select(Ni_MW, Ni_MD, Ni_Sd, Ni_StatF, Ni_Varkoef, Ni_OG, Ni_UG, 
                Ni_Error_MW, Ni_Error_MD, Ni_Error_Sd) %>% cleanColumnNames("Ni"),
  NominalSdARM2 %>% select(Cu_MW, Cu_MD, Cu_Sd, Cu_StatF, Cu_Varkoef, Cu_OG, Cu_UG,
                Cu_Error_MW, Cu_Error_MD, Cu_Error_Sd) %>% cleanColumnNames("Cu"),
  NominalSdARM2 %>% select(Zn_MW, Zn_MD, Zn_Sd, Zn_StatF, Zn_Varkoef, Zn_OG, Zn_UG, 
                Zn_Error_MW, Zn_Error_MD, Zn_Error_Sd) %>% cleanColumnNames("Zn"),
  NominalSdARM2 %>% select(As_MW, As_MD, As_Sd, As_StatF, As_Varkoef, As_OG, As_UG, 
                As_Error_MW, As_Error_MD, As_Error_Sd) %>% cleanColumnNames("As"),
  NominalSdARM2 %>% select(Se_MW, Se_MD, Se_Sd, Se_StatF, Se_Varkoef, Se_OG, Se_UG, 
                Se_Error_MW, Se_Error_MD, Se_Error_Sd) %>% cleanColumnNames("Se"),
  NominalSdARM2 %>% select(Rb_MW, Rb_MD, Rb_Sd, Rb_StatF, Rb_Varkoef, Rb_OG, Rb_UG, 
                Rb_Error_MW, Rb_Error_MD, Rb_Error_Sd) %>% cleanColumnNames("Rb"),
  NominalSdARM2 %>% select(Sr_MW, Sr_MD, Sr_Sd, Sr_StatF, Sr_Varkoef, Sr_OG, Sr_UG, 
                Sr_Error_MW, Sr_Error_MD, Sr_Error_Sd) %>% cleanColumnNames("Sr"),
   NominalSdARM2 %>% select(Y_MW, Y_MD, Y_Sd, Y_StatF, Y_Varkoef, Y_OG, Y_UG, 
                Y_Error_MW, Y_Error_MD, Y_Error_Sd) %>% cleanColumnNames("Y"),
  NominalSdARM2 %>% select(Zr_MW, Zr_MD, Zr_Sd, Zr_StatF, Zr_Varkoef, Zr_OG, Zr_UG, 
                Zr_Error_MW, Zr_Error_MD, Zr_Error_Sd) %>% cleanColumnNames("Zr"),
  NominalSdARM2 %>% select(Nb_MW, Nb_MD, Nb_Sd, Nb_StatF, Nb_Varkoef, Nb_OG, Nb_UG, 
                Nb_Error_MW, Nb_Error_MD, Nb_Error_Sd) %>% cleanColumnNames("Nb"),
  NominalSdARM2 %>% select(Mo_MW, Mo_MD, Mo_Sd, Mo_StatF, Mo_Varkoef, Mo_OG, Mo_UG, 
                Mo_Error_MW, Mo_Error_MD, Mo_Error_Sd) %>% cleanColumnNames("Mo"),
  NominalSdARM2 %>% select(Ag_MW, Ag_MD, Ag_Sd, Ag_StatF, Ag_Varkoef, Ag_OG, Ag_UG, 
                Ag_Error_MW, Ag_Error_MD, Ag_Error_Sd) %>% cleanColumnNames("Ag"),
  NominalSdARM2 %>% select(Sn_MW, Sn_MD, Sn_Sd, Sn_StatF, Sn_Varkoef, Sn_OG, Sn_UG, 
                Sn_Error_MW, Sn_Error_MD, Sn_Error_Sd) %>% cleanColumnNames("Sn"),
  NominalSdARM2 %>% select(Sb_MW, Sb_MD, Sb_Sd, Sb_StatF, Sb_Varkoef, Sb_OG, Sb_UG, 
                Sb_Error_MW, Sb_Error_MD, Sb_Error_Sd) %>% cleanColumnNames("Sb"),
  NominalSdARM2 %>% select(Cs_MW, Cs_MD, Cs_Sd, Cs_StatF, Cs_Varkoef, Cs_OG, Cs_UG, 
                Cs_Error_MW, Cs_Error_MD, Cs_Error_Sd) %>% cleanColumnNames("Cs"),
  NominalSdARM2 %>% select(Ba_MW, Ba_MD, Ba_Sd, Ba_StatF, Ba_Varkoef, Ba_OG, Ba_UG, 
                Ba_Error_MW, Ba_Error_MD, Ba_Error_Sd) %>% cleanColumnNames("Ba"),
 NominalSdARM2 %>% select(La_MW, La_MD, La_Sd, La_StatF, La_Varkoef, La_OG, La_UG, 
                La_Error_MW, La_Error_MD, La_Error_Sd) %>% cleanColumnNames("La"),
  NominalSdARM2 %>% select(Ce_MW, Ce_MD, Ce_Sd, Ce_StatF, Ce_Varkoef, Ce_OG, Ce_UG, 
                Ce_Error_MW, Ce_Error_MD, Ce_Error_Sd) %>% cleanColumnNames("Ce"),
  NominalSdARM2 %>% select(Pb_MW, Pb_MD, Pb_Sd, Pb_StatF, Pb_Varkoef, Pb_OG, Pb_UG, 
                Pb_Error_MW, Pb_Error_MD, Pb_Error_Sd) %>% cleanColumnNames("Pb"),
  NominalSdARM2 %>% select(Th_MW, Th_MD, Th_Sd, Th_StatF, Th_Varkoef, Th_OG, Th_UG, 
                Th_Error_MW, Th_Error_MD, Th_Error_Sd) %>% cleanColumnNames("Th"),
  NominalSdARM2 %>% select(Bal_MW, Bal_MD, Bal_Sd, Bal_StatF, Bal_Varkoef, Bal_OG, 
    Bal_UG, Bal_Error_MW, Bal_Error_MD, Bal_Error_Sd) %>% cleanColumnNames("Bal")
)

# Kombinieren mehrerer Dataframes
Tab3 <- rbind(Tab_1,Cl,S,V,Tab_2)

# Aneinanderreihen mehrerer Dataframes
Tab4<- cbind(Element,Tab3)

# Runden ausgewählter Spalten auf glatte Zahlen
Tab4[, c(2:5, 7:11)] <- round(Tab4[, c(2:5, 7:11)])

# Runden des Variationskoeffizienten auf 2 Dezimalstellen
Tab4$Varkoef<-round(Tab4$Varkoef,2)

# Speichern als CSV
write.csv(Tab4,"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal2709a.csv",
          row.names=FALSE)

6 Abb. 6-5

6.1 Berechnungen durchführen

# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_2709a_Daten.csv")
data2<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_SdAR-M2_Daten.csv")

# Auswahl der gewünschten Spalten
data<-select(data1,"Si","Ti","Al","Fe","Mn","Ca","K","P","S","Cl","V","Cr","Ni","Cu","Zn","Rb","Sr","Y","Zr","Nb","Cs","Ba","La","Pb","Th","Bal")
data3<-select(data2,"Si","Ti","Al","Fe","Mn","Ca","K","P","S","Cl","V","Cr","Ni","Cu","Zn","Rb","Sr","Y","Zr","Nb","Cs","Ba","La","Pb","Th","Bal")

# Definition der Formeln des Variationskoeffizient
Varkoef <- function(x){(sd(x)/mean(x))*100}

# Berechnung der Variationskoeffizienten
Varkoef_2709a<-(data)%>%summarize_all(list(Varkoef=Varkoef))
Varkoef_SdARM2<-(data3)%>%summarize_all(list(Varkoef=Varkoef))

# Kombinieren mehrerer Dataframes
Varkoef_AlleSt<- rbind(Varkoef_SdARM2,Varkoef_2709a)

# Hinzufügen der Probennummern als eigene Spalte
Varkoef_AlleSt$Probennummer<-c("SdAR-M2","2709a")

# Entfernen von "_Varkoef" aus den Spaltennamen
colnames(Varkoef_AlleSt) <- gsub("_Varkoef", "", colnames(Varkoef_AlleSt))

6.2 Tabelle transformieren

# Transformieren in "long format"
d <- melt(Varkoef_AlleSt, id.vars="Probennummer")

6.3 Abb. erstellen

# Diagramm erstellen
ggplot(d, aes(x = variable, y = value, colour = Probennummer, group=Probennummer)) +
 geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
 scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
 theme_classic()+ # Klassisches Design
  geom_point(aes(color=Probennummer))+ scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
  xlab("Chemische Elemente")+ ylab("Varkoef. in %") + # Manuelle Achsenbeschriftung
  scale_y_continuous(breaks=seq(0,20,2), expand=c(0,0), limits=c(0,14))+ # Manuelle Definition der Y-Achse
 theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom") +
  theme(axis.ticks=element_line(size=0.25,colour="black"))+ 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
  geom_hline(yintercept=10, color = "black",size=0.25) # Horizontale Markierung des Grenzwerts

# Export des Diagramms  
ggsave("Abb.6-5.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
       plot=last_plot(),device="eps",height=6,width=11.25,unit=c("cm"),dpi=1200)

7 Abb. 6-6

Achtung, die folgenden Berechnungen bauen auf jenen für Abb. 6-5 auf. D.h. diese müssen zuerst ausgeführt werden.

7.1 Zusammenstellen der Daten

# Auswahl der gewünschten Spalten
data3<-select(Varkoef_AlleSt,"Probennummer","Si","Ti","Al","Fe","Mn","Ca","K","P","V","Cu","Zn","Rb","Sr","Y","Zr","Nb","Ba","Pb","Th")

# Daten einlesen
Eslami<-read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Datengrundlage//Eslami_u.a._2020.csv")

# Kombinieren mehrerer Dataframes
Varkoef_AlleSt_Eslami<- rbind(data3,Eslami)

7.2 Tabelle transformieren

# Transformieren in "long format"
e <- melt(Varkoef_AlleSt_Eslami, id.vars="Probennummer")

7.3 Abb. erstellen

# Diagramm erstellen
ggplot(e, aes(x = variable, y = value, colour = Probennummer, group=Probennummer)) +
 geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
 scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
 theme_classic()+ # Klassisches Design
  geom_point(aes(color=Probennummer))+   scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
  xlab("Chemische Elemente")+  ylab("Varkoef. in %") + # Manuelle Achsenbeschriftung
  scale_y_continuous(breaks=seq(0,22,2), expand=c(0,0), limits=c(0,22.5))+ # Manuelle Definition der Y-Achse
 theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom") +
  theme(axis.ticks=element_line(size=0.25,colour="black"))+ 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
  geom_hline(yintercept=10, color = "black",size=0.25) # Horizontale Markierung des Grenzwerts

# Export des Diagramms  
ggsave("Abb.6-6.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
       plot=last_plot(),device="eps",height=6,width=11.25,unit=c("cm"),dpi=1200)

8 Abb. 6-8

Achtung! Bevor die .csv geladen wird in Excel das Datumsformat richtig einstellen damit es als aufsteigende, nummerische Variable wahrgenommen wird (als Datum gibts sonst ungleiche Abstände was ich hier nicht möchte): Spalte markieren, Format, Gebietsschema Englisch (Großbritannien) und Format 2001-03-14 auswählen

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//lDrift_NitonXL3t.csv")

# Diagramm erstellen
data %>%
 filter(Element %in% c("Al", "Si","K")) %>% # Auswahl der gewünschten Elemente
 ggplot(size = 2) + # Manuelle Definition der Symbolgröße
 aes(x = Time, y = ProzAbw, colour = Element) +
 geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
 scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
 theme_classic()+ # Klassisches Design
  geom_point(aes(color=Element))+scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
  geom_hline(yintercept=0, color = "red",size=0.25)+ # Horizontale Markierung des Null-Werts
  xlab("Probennahme in Monat und Jahr")+ ylab("Prozentuale Abweichung vom dem Nominalwert zugehörigen Median") + # Manuelle Achsenbeschriftung
  scale_y_continuous(breaks=seq(-31,16,2), expand=c(0,0), limits=c(-31,16))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom") +
  theme(axis.ticks=element_line(size=0.25,colour="black"))+ 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren

# Export des Diagramms   
ggsave("Abb.6-8.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
       plot=last_plot(),device="eps",height=11,width=15.3,unit=c("cm"),dpi=1200)

9 Abb. 6-9

# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//lDrift_NitonXL3t.csv")

# Filter nach Zeilen die zum Projekt gehören
data <- filter(data1, Projekt %in% c("2018_005_VG_RB", "2018_005_VG"))

# Diagramm erstellen
data %>%
 filter(Element %in% c("Al", "Si","K")) %>% # Auswahl der gewünschten Elemente
 ggplot(size = 2) + # Manuelle Definition der Symbolgröße
 aes(x = Time, y = ProzAbw, colour = Element) +
 geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
 scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
 theme_classic()+ # Klassisches Design
  geom_point(aes(color=Element))+scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
  geom_hline(yintercept=0, color = "red",size=0.25)+ # Horizontale Markierung des Null-Werts
  xlab("Probennahme in Monat und Jahr")+ ylab("Prozentuale Abweichung vom dem Nominalwert zugehörigen Median") + # Manuelle Achsenbeschriftung
  scale_y_continuous(breaks=seq(-31,16,2), expand=c(0,0), limits=c(-31,16))+ # Manuelle Definition der Y-Achse
  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom") +
  theme(axis.ticks=element_line(size=0.25,colour="black"))+ 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren

# Export des Diagramms   
ggsave("Abb.6-9.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
       plot=last_plot(),device="eps",height=11,width=15.3,unit=c("cm"),dpi=1200)

10 Abb. 6-11 - Statistik

# Daten einlesen und filtern
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2.csv")
data<-subset(data, Messung %in% c("E"))

# Auswahl der gewünschten Spalten
data1<- data[, c(3,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108)]

# Variationskoeffizient-Funktion mit Fehlerbehandlung
Varkoef <- function(x) { (sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)) * 100 }

# Berechnung der Variationskoeffizienten
WerteSdAM2<-(data1) %>%
  group_by(Tag) %>%
  summarize(across(everything(),list(Varkoef=Varkoef))) 

# Auswahl der gewünschten Spalten für Varkoef_SdAM2
Varkoef_SdAM2<-WerteSdAM2[,c("Tag","Si_Varkoef","Ti_Varkoef","Al_Varkoef","Fe_Varkoef","Mn_Varkoef","Mg_Varkoef","Ca_Varkoef","K_Varkoef","P_Varkoef","S_Varkoef","Cl_Varkoef","V_Varkoef","Cr_Varkoef","Ni_Varkoef","Cu_Varkoef","Zn_Varkoef","As_Varkoef","Se_Varkoef","Rb_Varkoef","Sr_Varkoef","Y_Varkoef","Zr_Varkoef","Nb_Varkoef","Mo_Varkoef","Ag_Varkoef","Sn_Varkoef","Sb_Varkoef","Cs_Varkoef","Ba_Varkoef","La_Varkoef","Pb_Varkoef","Th_Varkoef","Bal_Varkoef")]

# Entfernen von "_Varkoef" aus den Spaltennamen
colnames(Varkoef_SdAM2) <- sub("_Varkoef$", "", colnames(Varkoef_SdAM2))

# Speichern als CSV
write.csv(Varkoef_SdAM2,
  "../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2_Varkoef.csv",
  row.names=FALSE)

11 Abb. 6-12 - Statistik

11.1 Relative Messunsicherheit (RMU) der ersten beiden Tage (nur Einzelmessungen)

# Laden der Daten
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")
data2<-subset(data1, Messung %in% c("E"))
data <- data2[c(1, 2), ]

# Auswahl der gewünschten Variablen
variables <- colnames(data)[c(5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,
                              51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97)]

# Funktion zur Berechnung von RU mit Fehlerbehandlung für 0-Werte
calculate_RMU <- function(variable) {
  data_col <- variable
  sd_col <- paste0(variable, ".Error")  # Fehler-Spalte
  
  if (data_col %in% colnames(data) & sd_col %in% colnames(data)) {
    # Vermeiden von Division durch Null
    denominator <- ifelse(data[[data_col]] == 0, NA, data[[data_col]])
    return((data[[sd_col]] / denominator) * 100)
  } else {
    return(rep(NA, nrow(data)))  # Falls Spalten nicht existieren
  }
}

# Berechnung der RU für die gewählten Variablen
for (variable in variables) {
  data[[paste0(variable, "_RMU")]] <- calculate_RMU(variable)
}

# Auswahl nur der berechneten RU-Spalten
RU_columns <- grep("_RMU$", colnames(data), value = TRUE)

# Extrahiere nur die RU-Spalten als neuen DataFrame
data_RMU <- data[, RU_columns, drop = FALSE]

# Entfernen von "_RMU" aus den Spaltennamen
colnames(data_RMU) <- sub("_RMU$", "", colnames(data_RMU))

# Definieren der Spalte SAMPLE der Datei Mean als Variable SAMPLE
Tag<-data$Tag

# Zusammenfügen von SAMPLE und data_RMU in eine gemeinsame Tabelle
data_RMU<-cbind(Tag,data_RMU)

# Auswahl der relevanten Spalten
Tag1_2<-data_RMU[,c("Tag","Si","Ti","Al","Fe","Mn","Mg","Ca","K","P","S","Cl","V","Cr","Ni","Cu","Zn","As","Se","Rb","Sr","Y","Zr","Nb","Mo","Ag","Sn","Sb","Cs","Ba","La","Pb","Th","Bal")]

11.2 Variationskoeffizienten

# Daten einlesen und filtern
data <- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")
data <- subset(data, Messung %in% c("E"))

# Auswahl der gewünschten Spalten
data1 <- data[, c(2,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,
                  51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97)]

# Variationskoeffizient-Funktion mit Fehlerbehandlung
Varkoef <- function(x) { (sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)) * 100 }

# Berechnung der Variationskoeffizienten
Werte2709a <- data1 %>%
  group_by(Tag) %>%
  summarize(across(everything(), list(Varkoef = Varkoef)))

# Auswahl der gewünschten Spalten für Varkoef_2709a
Varkoef_2709a <- Werte2709a[, c("Tag", "Si_Varkoef", "Ti_Varkoef", "Al_Varkoef", "Fe_Varkoef", "Mn_Varkoef",
                                "Mg_Varkoef", "Ca_Varkoef", "K_Varkoef", "P_Varkoef", "S_Varkoef", "Cl_Varkoef",
                                "V_Varkoef", "Cr_Varkoef", "Ni_Varkoef", "Cu_Varkoef", "Zn_Varkoef", "As_Varkoef",
                                "Se_Varkoef", "Rb_Varkoef", "Sr_Varkoef", "Y_Varkoef", "Zr_Varkoef", "Nb_Varkoef",
                                "Mo_Varkoef", "Ag_Varkoef", "Sn_Varkoef", "Sb_Varkoef", "Cs_Varkoef", "Ba_Varkoef",
                                "La_Varkoef", "Pb_Varkoef", "Th_Varkoef", "Bal_Varkoef")]

# Entfernen von "_Varkoef" aus den Spaltennamen
colnames(Varkoef_2709a) <- sub("_Varkoef$", "", colnames(Varkoef_2709a))

# Auswahl der gewünschten Zeilen
Tage_3_26 <- Varkoef_2709a[c(3:26),]

# Kombinieren mehrer Dataframes
data3 <- rbind(Tag1_2, Tage_3_26)

# Speichern als CSV
write.csv(data3,
  "../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a_Varkoef.csv",
  row.names=FALSE)

12 Abb. 6-13

12.1 Berechnen der Kennwerte

# Daten einlesen
data <- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2.csv")

# Berechnung des Mittelwerts für jede Spalte, gruppiert nach 'Tag'
Richtig <- data %>%
  group_by(Tag) %>%
  summarize(across(everything(), list(mean = mean)))

# Speichern der berechneten Mittelwerte als CSV-Datei
write.csv(Richtig,
          "../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2_Richtig.csv",
          row.names = FALSE)

12.2 Erstellen Abb. 6-13

In die zuvor erstellte Datei wurden händisch die Mittelwerte für die einzelnen Messorte, d.h. die Wiederholpräzision, eingetragen (Tag 07.1 (=Tag 01-07), 19.1 (=Tag 08-19), 23.1 (=Tag 20-23)) sowie die Spalten B bis O gelöscht. Die Tage 1 bis 3 des Jahres 2019 wurden als Tage 24 bis 26 (mit 26.1 als Wiederholpräzision) eingefügt um die Abbildung mit den Daten in der richtigen Reihenfolge erstellen zu können. Ergänzend wurde eine Spalte mit den zugehörigen Messorten eingefügt.

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2_Richtig_bearb.csv")

# Diagramm erstellen
Richtig_SdAR_M2_Si <- ggplot(data, aes(x=Tag, y=Si_mean, color=Messort)) +
  geom_point(aes(shape=Messort), size=1) +  # Punkte für verschiedene Messorte
  scale_shape_manual(values=c(15,16,2,17)) + 
  scale_color_manual(values=c("grey80","grey55","black","Wheat4")) +
  geom_errorbar(aes(ymin=Si_mean-Si_Error_mean, ymax=Si_mean+Si_Error_mean),
                width=0.2, position=position_dodge(0.9)) +  # Fehlerbalken aus Abb. 6.3 
  geom_hline(yintercept=385367.54, color="red", size=0.25) +  # Mittelwert aus Abb. 6.3 
  geom_hline(yintercept=387081.74, color="red", size=0.25, linetype="dashed") +  # Obergrenze aus Abb. 6.3 
  geom_hline(yintercept=383653.35, color="red", size=0.25, linetype="dashed") +  # Untergrenze aus Abb. 6.3 
  geom_vline(xintercept="Tag 07.1", color="black", size=0.25) +  # Vertikale Markierungen der Wiederholpräzision
  geom_vline(xintercept="Tag 19.1", color="black", size=0.25) +
  geom_vline(xintercept="Tag 23.1", color="black", size=0.25) +
  geom_vline(xintercept="Tag 26.1", color="black", size=0.25) +
  scale_y_continuous(breaks=seq(305000,390000,10000), expand=c(0,0), limits=c(305000,390000)) + # Manuelle Definition der Y-Achse
  xlab("Messtage") + ylab("Si in ppm") + # Manuelle Achsenbeschriftung
  theme_classic() +  # Klassisches Design
  theme(axis.line=element_line(colour="black", size=0.25)) +
  theme(legend.position="bottom") +  
  theme(legend.title=element_blank(),
        legend.text=element_text(size=8),
        axis.title=element_text(size=9),
        axis.text=element_text(size=8, color="black"),
        axis.text.x = element_text(angle=90, vjust=0.5, hjust=1))  # Achsentext rotieren


 Richtig_SdAR_M2_Al<- ggplot(data, aes(x=Tag,y=Al_mean,color=Messort)) +  geom_point(aes(shape=Messort),size=1) +  scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(52500,80000, 5000), expand=c(0,0), limits=c(52500,80000))+geom_hline(yintercept=78427.18, color = "red",size=0.25)+geom_hline(yintercept=79151.18, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=77703.18, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+  xlab("Messtage") +  ylab("Al in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Al_mean-Al_Error_mean, ymax=Al_mean+Al_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

 Richtig_SdAR_M2_K<- ggplot(data, aes(x=Tag,y=K_mean,color=Messort)) +  geom_point(aes(shape=Messort),size=1) +  scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(38500,41500, 500), expand=c(0,0), limits=c(38500,41500))+geom_hline(yintercept=41380.59, color = "red",size=0.25)+geom_hline(yintercept=41484.06, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=41277.11, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+
  xlab("Messtage") +  ylab("K in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=K_mean-K_Error_mean, ymax=K_mean+K_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

 Richtig_SdAR_M2_P<- ggplot(data, aes(x=Tag,y=P_mean,color=Messort)) +  geom_point(aes(shape=Messort),size=1) +  scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(500,1350,100), expand=c(0,0), limits=c(500,1350))+geom_hline(yintercept=878.64, color = "red",size=0.25)+geom_hline(yintercept=910.88, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=846.39, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+  xlab("Messtage") +  ylab("P in ppm") +    theme_classic() +
  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=P_mean-P_Error_mean, ymax=P_mean+P_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
Richtig_SdAR_M2_Rb<-  ggplot(data, aes(x=Tag,y=Rb_mean,color=Messort)) +  geom_point(aes(shape=Messort),size=1) +  scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(130,155,5), expand=c(0,0), limits=c(135,155))+geom_hline(yintercept=143.59, color = "red",size=0.25)+geom_hline(yintercept=144.74, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=142.44, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+  xlab("Messtage") +  ylab("Rb in ppm") +    theme_classic() +
  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Rb_mean-Rb_Error_mean, ymax=Rb_mean+Rb_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
 Richtig_SdAR_M2_Sr<- ggplot(data, aes(x=Tag,y=Sr_mean,color=Messort)) +  geom_point(aes(shape=Messort),size=1) +  scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(138,152,2), expand=c(0,0), limits=c(138,152))+geom_hline(yintercept=146.40, color = "red",size=0.25)+geom_hline(yintercept=147.97, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=144.82, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+  xlab("Messtage") +  ylab("Sr in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Sr_mean-Sr_Error_mean, ymax=Sr_mean+Sr_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
   Richtig_SdAR_M2_Y<- ggplot(data, aes(x=Tag,y=Y_mean,color=Messort)) +  geom_point(aes(shape=Messort),size=1) +  scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(24,34,2), expand=c(0,0), limits=c(24,34))+geom_hline(yintercept=28.54, color = "red",size=0.25)+geom_hline(yintercept=29.74, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=27.34, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+
  xlab("Messtage") +  ylab("Y in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Y_mean-Y_Error_mean, ymax=Y_mean+Y_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
# Kombination der Diagramme   
ggarrange(Richtig_SdAR_M2_Si,Richtig_SdAR_M2_Al,Richtig_SdAR_M2_K,
  Richtig_SdAR_M2_P,Richtig_SdAR_M2_Rb,Richtig_SdAR_M2_Sr,
  Richtig_SdAR_M2_Y,ncol=2,nrow=4,common.legend=TRUE)+theme(legend.position="bottom")

# Export des kombinierten Diagramms
ggsave("Abb.6-13.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
  plot=last_plot(),device="eps",height=20.5,width=15.3,unit=c("cm"),dpi=1200)

13 Abb. 6-14

13.1 Berechnen der Kennwerte

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")

# Berechnung des Mittelwerts für jede Spalte, gruppiert nach 'Tag'
Richtig<-(data) %>%
  group_by(Tag) %>%
  summarize(across(everything(),list(mean=mean))) 

# Speichern der berechneten Mittelwerte als CSV-Datei
write.csv(Richtig,
  "../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a_Richtig.csv",
  row.names=FALSE)

13.2 Erstellen Abb. 6-14

In die zuvor erstellte Datei wurde händisch der Mittelwert, d.h. die Wiederholpräzision, eingetragen (Tag 26.1 (=Tag 01-26)) sowie die Spalten B bis D gelöscht.

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a_Richtig_bearb.csv")

# Diagramm erstellen
Richtig_2709a_Si <- ggplot(data, aes(x = Tag, y = Si_mean)) + 
  geom_point(aes(shape = "rectangular"), size = 1) + # Definieren der Symbole als Rechtecke
  theme(axis.ticks = element_line(size = 0.25, colour = "black")) + 
  scale_y_continuous(breaks = seq(260000, 310000, 5000), expand = c(0, 0), limits = c(275000, 300000)) + # Manuelle Definition der Y-Achse
  geom_hline(yintercept = 287931.23, color = "red", size = 0.25) + # Mittelwert aus Abb. 6.4
  geom_hline(yintercept = 286290.03, color = "red", size = 0.25, linetype = "dashed") + # Untergrenze aus Abb. 6.4
  geom_hline(yintercept = 289572.43, color = "red", size = 0.25, linetype = "dashed") + # Obergrenze aus Abb. 6.4
  geom_vline(xintercept = "Tag 26.1", color = "black", size = 0.25) + # Vertikale Markierungen der Wiederholpräzision
  xlab("Messtage") + ylab("Si in ppm") + # Manuelle Achsenbeschriftung
  theme_classic() + # Klassisches Design
  theme(axis.line = element_line(colour = "black", size = 0.25)) + 
  theme(legend.title = element_blank(), 
        legend.text = element_text(size = 8), 
        axis.title = element_text(size = 9), 
        axis.text = element_text(size = 8, color = "black")) + 
  theme(legend.position = "bottom") + 
  geom_errorbar(aes(ymin = Si_mean - Si.Error_mean, ymax = Si_mean + Si.Error_mean), 
                width = .2, position = position_dodge(.9)) + # Fehlerbalken aus Abb. 6.4 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) # Achsentext rotieren

Richtig_2709a_Al<- ggplot(data, aes(x=Tag,y=Al_mean)) +  geom_point(aes(shape="rectangular"),size=1) +  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(76000,91000, 2000), expand=c(0,0), limits=c(77000,91500))+geom_hline(yintercept=86962.76, color = "red",size=0.25)+geom_hline(yintercept=85623.14, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=88302.38, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+ xlab("Messtage") +  ylab("Al in ppm") +  theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Al_mean-Al.Error_mean, ymax=Al_mean+Al.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

Richtig_2709a_K<- ggplot(data, aes(x=Tag,y=K_mean)) +  geom_point(aes(shape="rectangular"),size=1) +  theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(18200,20000, 200), expand=c(0,0), limits=c(18300,20000))+geom_hline(yintercept=18918.29, color = "red",size=0.25)+geom_hline(yintercept=18844.31, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=18992.28, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") + ylab("K in ppm") +    theme_classic() +
  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=K_mean-K.Error_mean, ymax=K_mean+K.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

Richtig_2709a_P<- ggplot(data, aes(x=Tag,y=P_mean)) +  geom_point(aes(shape="rectangular"),size=1) +   theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(900,1600,100), expand=c(0,0), limits=c(900,1560))+geom_hline(yintercept=1461.82, color = "red",size=0.25)+geom_hline(yintercept=1510.82, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=1412.82, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+  xlab("Messtage") +  ylab("P in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=P_mean-P.Error_mean, ymax=P_mean+P.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
 
 Richtig_2709a_V<-  ggplot(data, aes(x=Tag,y=V_mean)) +  geom_point(aes(shape="rectangular"),size=1) +   theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(115,180,5), expand=c(0,0), limits=c(115,180))+geom_hline(yintercept=136.34, color = "red",size=0.25)+geom_hline(yintercept=143.37, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=129.30, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") +  ylab("V in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=V_mean-V.Error_mean, ymax=V_mean+V.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
Richtig_2709a_Rb<-  ggplot(data, aes(x=Tag,y=Rb_mean))  +  geom_point(aes(shape="rectangular"),size=1) +   theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(80,100,2), expand=c(0,0), limits=c(81,93))+geom_hline(yintercept=84.42, color = "red",size=0.25)+geom_hline(yintercept=85.91, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=83.23, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") +  xlab("Messtage") +  ylab("Rb in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Rb_mean-Rb.Error_mean, ymax=Rb_mean+Rb.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
Richtig_2709a_Sr<- ggplot(data, aes(x=Tag,y=Sr_mean)) +  geom_point(aes(shape="rectangular"),size=1) +   theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(210,235,2), expand=c(0,0), limits=c(216,234))+geom_hline(yintercept=223.57, color = "red",size=0.25)+geom_hline(yintercept=224.82, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=222.32, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") +  ylab("Sr in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Sr_mean-Sr.Error_mean, ymax=Sr_mean+Sr.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
  Richtig_2709a_Y<- ggplot(data, aes(x=Tag,y=Y_mean))+  geom_point(aes(shape="rectangular"),size=1) +   theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(8,17,1), expand=c(0,0), limits=c(10,17))+geom_hline(yintercept=13.67, color = "red",size=0.25)+geom_hline(yintercept=14.70, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=12.65, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") +  ylab("Y in ppm") +    theme_classic() +  theme(axis.line=element_line(colour="black",size=0.25)) +  theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Y_mean-Y.Error_mean, ymax=Y_mean+Y.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

# Kombination der Diagramme  
ggarrange(Richtig_2709a_Si,Richtig_2709a_Al,Richtig_2709a_K,Richtig_2709a_P,Richtig_2709a_V,Richtig_2709a_Rb,Richtig_2709a_Sr,Richtig_2709a_Y,ncol=2,nrow=4,common.legend=TRUE)+theme(legend.position="bottom")

# Export des kombinierten Diagramms
ggsave("Abb.6-14.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
  plot=last_plot(),device="eps",height=20.5,width=15.3,unit=c("cm"),dpi=1200)

14 Abb. 6-15

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2.csv")

# Diagramm erstellen
Kontrolle_SdAR_M2_Sr<- ggplot(data, aes(x=Tag,y=Sr,color=Messort)) +  
  geom_point(aes(shape=Messung),size=1) + # Punkte für verschiedene Messungen
  scale_shape_manual(values=c(1,8))+ geom_line(size = 0.25)+ # Manuelle Definition der Symbole
  scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+  # Manuelle Definition der Farben
  theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(132,152,2), expand=c(0,0), limits=c(132,152))+ # Manuelle Definition der Y-Achse
  geom_hline(yintercept=146.40, color = "red",size=0.25)+ # Mittelwert aus Abb. 6.3
  geom_hline(yintercept=147.97, color = "red",size=0.25,linetype="dashed")+ # Obergrenze aus Abb. 6.3
  geom_hline(yintercept=144.82, color = "red",size=0.25,linetype="dashed")+ # Untergrenze aus Abb. 6.3
  geom_hline(yintercept=149.55, color = "black",size=0.25,linetype="dotted")+ # Doppelte Untergrenze aus Abb. 6.3
  geom_hline(yintercept=143.24, color = "black",size=0.25,linetype="dotted")+ # Doppelte Untergrenze aus Abb. 6.3 
  xlab("Messtage") +  ylab("Sr in ppm") + # Manuelle Achsenbeschriftung
  theme_classic() +  # Klassisches Design
  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  
  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren

Kontrolle_SdAR_M2_Rb<-  ggplot(data, aes(x=Tag,y=Rb,color=Messort)) +  
  geom_point(aes(shape=Messung),size=1) + geom_line(size = 0.25) +
  scale_shape_manual(values=c(1,8))+  
  scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+  
  theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(130,155,2), expand=c(0,0), limits=c(135,155))+
  geom_hline(yintercept=143.59, color = "red",size=0.25)+
  geom_hline(yintercept=144.74, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=142.44, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=145.89, color = "black",size=0.25,linetype="dotted")+
  geom_hline(yintercept=141.29, color = "black",size=0.25,linetype="dotted")+  
  xlab("Messtage") +  ylab("Rb in ppm") +  theme_classic() +  
  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  
  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

Kontrolle_SdAR_M2_Y<- ggplot(data, aes(x=Tag,y=Y,color=Messort)) +  
  geom_point(aes(shape=Messung),size=1) +geom_line(size = 0.25) +
  scale_shape_manual(values=c(1,8))+ 
  scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+ 
  theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(24,34,2), expand=c(0,0), limits=c(24,34))+
  geom_hline(yintercept=28.54, color = "red",size=0.25)+
  geom_hline(yintercept=29.74, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=27.34, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=30.94, color = "black",size=0.25,linetype="dotted")+
  geom_hline(yintercept=26.14, color = "black",size=0.25,linetype="dotted")+  
  xlab("Messtage") +  ylab("Y in ppm") +    theme_classic() +  
  theme(axis.line=element_line(colour="black",size=0.25)) + 
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  
  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
Kontrolle_SdAR_M2_Zn<- ggplot(data, aes(x=Tag,y=Zn,color=Messort)) +  
  geom_point(aes(shape=Messung),size=1) +geom_line(size = 0.25) +
  scale_shape_manual(values=c(1,8))+ 
  scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+  
  theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(650,790,20), expand=c(0,0), limits=c(650,780))+
  geom_hline(yintercept=708.94, color = "red",size=0.25)+
  geom_hline(yintercept=714.42, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=703.45, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=719.91, color = "black",size=0.25,linetype="dotted")+
  geom_hline(yintercept=697.96, color = "black",size=0.25,linetype="dotted")+  
  xlab("Messtage") +  ylab("Zn in ppm") +  theme_classic() +  
  theme(axis.line=element_line(colour="black",size=0.25)) +
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +  
  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")

# Diagramm erstellen
Kontrolle_2907a_Rb<-  ggplot(data, aes(x=Tag,y=Rb,color=Messort))  +  
  geom_point(aes(shape=Messung),size=1) +# Punkte für verschiedene Messungen
  scale_shape_manual(values=c(1,8))+ # Manuelle Definition der Symbole
  scale_color_manual(values=c("grey21"))+ geom_line(size = 0.25)+ # Manuelle Definition der Farben
   theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(80,94,2), expand=c(0,0), limits=c(81,91))+ # Manuelle Definition der Y-Achse
  geom_hline(yintercept=84.42, color = "red",size=0.25)+ # Mittelwert aus Abb. 6.4
  geom_hline(yintercept=85.61, color = "red",size=0.25,linetype="dashed")+ # Obergrenze aus Abb. 6.4
  geom_hline(yintercept=83.23, color = "red",size=0.25,linetype="dashed")+ # Untergrenze aus Abb. 6.4
  geom_hline(yintercept=86.80, color = "black",size=0.25,linetype="dotted")+ # Doppelte Obergrenze aus Abb. 6.4
  geom_hline(yintercept=82.04, color = "black",size=0.25,linetype="dotted")+ # Doppelte Untergrenze aus Abb. 6.4 
  xlab("Messtage") +  ylab("Rb in ppm") + # Manuelle Achsenbeschriftung   
  theme_classic() +  # Klassisches Design
  theme(axis.line=element_line(colour="black",size=0.25)) + 
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren
  
Kontrolle_2907a_Sr<- ggplot(data, aes(x=Tag,y=Sr,color=Messort)) +  
  geom_point(aes(shape=Messung),size=1) +scale_shape_manual(values=c(1,8))+
  scale_color_manual(values=c("grey21"))+ geom_line(size = 0.25)+
   theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(210,235,2), expand=c(0,0), limits=c(210,235))+
  geom_hline(yintercept=223.57, color = "red",size=0.25)+
  geom_hline(yintercept=224.82, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=222.32, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=226.07, color = "black",size=0.25,linetype="dotted")+
  geom_hline(yintercept=221.08, color = "black",size=0.25,linetype="dotted")+  
  xlab("Messtage") +  ylab("Sr in ppm") +    theme_classic() +  
  theme(axis.line=element_line(colour="black",size=0.25)) + 
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
Kontrolle_2907a_Y<- ggplot(data, aes(x=Tag,y=Y,color=Messort))+  
  geom_point(aes(shape=Messung),size=1) +scale_shape_manual(values=c(1,8))+
  scale_color_manual(values=c("grey21"))+ geom_line(size = 0.25)+
   theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(11,17,1), expand=c(0,0), limits=c(11,17))+
  geom_hline(yintercept=13.67, color = "red",size=0.25)+
  geom_hline(yintercept=14.70, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=12.65, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=15.04, color = "black",size=0.25,linetype="dotted")+
  geom_hline(yintercept=12.31, color = "black",size=0.25,linetype="dotted")+  
  xlab("Messtage") +  ylab("Y in ppm") +    theme_classic() +  
  theme(axis.line=element_line(colour="black",size=0.25)) + 
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
  theme(legend.position="bottom")+  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
  
Kontrolle_2907a_Zn<- ggplot(data, aes(x=Tag,y=Zn,color=Messort))+  
  geom_point(aes(shape=Messung),size=1) +scale_shape_manual(values=c(1,8))+ 
  geom_line(size = 0.25)+scale_color_manual(values=c("grey21"))+
   theme(axis.ticks=element_line(size=0.25,colour="black"))+
  scale_y_continuous(breaks=seq(78,102,2), expand=c(0,0), limits=c(78,102))+
  geom_hline(yintercept=91.65, color = "red",size=0.25)+
  geom_hline(yintercept=96.21, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=87.09, color = "red",size=0.25,linetype="dashed")+
  geom_hline(yintercept=100.78, color = "black",size=0.25,linetype="dotted")+
  geom_hline(yintercept=82.52, color = "black",size=0.25,linetype="dotted")+  
  xlab("Messtage") +  ylab("Zn in ppm") +    theme_classic() +  
  theme(axis.line=element_line(colour="black",size=0.25)) + 
  theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + 
  theme(legend.position="bottom")+  theme(legend.position="bottom")+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

# Kombination der Diagramme 
ggarrange(Kontrolle_SdAR_M2_Rb,Kontrolle_SdAR_M2_Sr,Kontrolle_SdAR_M2_Y,
          Kontrolle_SdAR_M2_Zn,Kontrolle_2907a_Rb,Kontrolle_2907a_Sr,
          Kontrolle_2907a_Y,Kontrolle_2907a_Zn,ncol=2,nrow=4,common.legend=TRUE)+
  theme(legend.position="bottom")

# Export des kombinierten Diagramms
ggsave("Abb.6-15.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
    plot=last_plot(),device="eps",height=20.5,width=15.3,unit=c("cm"),dpi=1200)

15 Literatur

Allaire u. a. 2024: J. J. Allaire/C. Teague/C. Scheidegger/Y. Xie/C. Dervieux, Quarto v.1.5.55. https://quarto.org.
Field, A. u. a. 2013: A. Field/J. Miles/Z. Field, Discovering Statistics using R (Los Angeles 2013).
Fox u. a. 2024: J. Fox/M. Marquez/M. Bouchet-Valat, Rcmdr: R Commander: R package version 2.9-2. https://socialsciences.mcmaster.ca/jfox/misc/rcmdr/.
Fox/Marquez 2023: J. Fox/M. Marquez, RcmdrMisc: R Commander Miscellaneous Functions: R package version 2.9-1. https://cran.r-project.org/package=rcmdrmisc.
Fox/Weisberg 2019: J. Fox/S. Weisberg, An R companion to applied regression 3(London 2019).
Kassambara 2023: A. Kassambara, ggpubr: ’ggplot2’ Based Publication Ready Plots: R package version 0.6.0. https://cran.r-project.org/package=ggpubr.
R Core Team 2024: R Core Team, R v.4.4.1: A Language and Environment for Statistical Computing: Race for Your Life. https://www.r-project.org/.
RStudio Team 2024: RStudio Team, RStudio v. 2024.04.2: Integrated Development Environment for R. https://www.rstudio.com/.
Schauer 2025: M. Schauer, La Hoguette – Kultur, Phänomen, Subkultur? Archäologische Studien und portable, energiedispersive Röntgenfluoreszenzanalysen (p-ED-RFA) an Keramik zu einer altbekannten Frage 183. Philippika 183 (Wiesbaden 2025).
Siegmund 2020: F. Siegmund, Statistik in der Archäologie: eine anwendungsorientierte Einführung auf Basis freier Software (Norderstedt 2020). https://frank-siegmund.de/images/opendata/2020-archaeostatistik/siegmund_2020_daten.zip.
Siegmund 2023: F. Siegmund, Einführung Quarto. https://www.frank-siegmund.de/images/opendata/einfuehrungquarto.zip.
Wickham 2007: H. Wickham, Reshaping Data with the reshape Package. Journal of Statistical Software, 21/12, 2007, 1–20. DOI: https://doi.org/10.21105/joss.01686.
Wickham 2016: H. Wickham, ggplot2: Elegant graphics for data analysis. Use R! 2(Cham 2016). https://ebookcentral.proquest.com/lib/kxp/detail.action?docid=4546676.
Wickham 2023: H. Wickham, stringr: Simple, Consistent Wrappers for Common String Operations: R package version 1.5.1. https://cran.r-project.org/package=stringr.

Wiederverwendung