Einführung
Zu diesem Artikel gibt es auch ein Video auf Youtube:
Bei Prüfungen an Universitäten werden die wunderbar absolut-skalierten Punkte in ordinale Skalen umgewandelt (üblicherweise die Noten 1.0, 1.3, 1.7, 2.0, 2.3, 2.7, 3.0, 3.3, 3.7, 4.0, 5.0). Das dies meist nicht nach einem festgelegtem Schema passiert, wird den ein oder anderen wundern. In diesem kurzen Beitrag schauen wir uns ein paar Berechnungen an und werden feststellen, dass die Notenbereiche nur in Ausnahmefällen gleich groß sind.
Kurz vorab: Eine Übersicht (ganz unten) bietet eine schnelle Navigation für eine bestimmte maximale Punktzahl. Wenn man nur die Grenzen wissen möchte, reichen diese Tabellen aus. Wer mehr wissen will, liest erst mal hier weiter.
Berechnung
Wir machen eine kleine Analyse mit R, für die wir zunächst ein paar Pakete laden:
Im ersten Schritt teilen wir die 11 Noten auf den Bereich zwischen 50% und 100% ein. Ab 50% gilt eine Prüfung als bestanden.
[1] 50 55 60 65 70 75 80 85 90 95 100
Hier wäre schon mal der erste Schritt für eine Standardisierung getan. Die Grenzen haben alle gleiche Abstände, allerdings ist der Bereich zwischen 95% und 100% etwas größer, da die 100% mit eingschlossen wird. Bei den anderen Bereichen ist der obere Wert nicht mehr im Intervall. Z. B. geht der erste Bereich von 50 bis 44.999, die 55 ist schon im nächsten Intervall. Tendenziell wird also der Bereich für 1,0 größer ausfallen. Das ist natürlich ungünstig und subjektiv (man kann auch einen beliebigen anderen Bereich vergrößern), aber stellt nicht das größte Problem dar (was wir gleich sehen werden).
Nun brauchen wir eine Funktion, die die maximale Punktzahl, die Prozente und die dazugehörigen Noten zusammenmischt und uns eine Tabelle der Grenzen ausgibt. Hier passiert nichts besonderes, bis auf die Funktion findInterval
, die die Punkte den Grenzen zuordnet. Da die Höchstpunktzahl auch eine Note braucht, setzen wir den Parameter rightmost.closed
auf TRUE
.
create_grade <- function ( points , percent , grade ) {
max_points <- max ( points )
interval <- findInterval ( points , c ( 0 , max ( points ) * percent / 100 ) ,
rightmost.closed = T )
df <- data.frame ( points ,
grade = grade [ interval ] )
cut_points <- df %>%
group_by ( grade ) %>%
summarize ( min = min ( points ) , max = max ( points ) ) %>%
mutate ( diff = max - min ) # die Länge des Bereichs
return ( cut_points )
}
Nun können wir ein paar typische Fälle erstellen. Die Punkte werden hier über seq
mit Schritten von 0.5 erstellt, da es bei den meisten Klausuren auch halbe Punkte gibt.
max_points <- seq ( 20 , 40 , 0.5 )
grade <- c ( 5 , 4 , 3.7 , 3.3 , 3 , 2.7 , 2.3 , 2 , 1.7 , 1.3 , 1 )
points <- lapply ( max_points , function ( x ) seq ( 0 , x , 0.5 ) )
grade_list <- lapply ( points , create_grade , percent , grade )
names ( grade_list ) <- paste0 ( "Max Punkte: " , max_points )
Notenschlüssel Tabellen
Nun können wir die Tabellen erzeugen, hier über kableExtra
. Zu beachten ist, dass kbl
ohne kable_styling
zu inkorrekt formatieren Tabellen führt. Das genutzte Hugo-Theme scheint davon auszugehen, dass die erste Spalte keinen Namen trägt, was aber meist nicht zutrifft. Der kryptische cat
-Befehl sorgt für eine schnelle Navigation durch Erstellung eines Akkordions.
res <- Map ( function ( x , y )
kable_styling ( kbl ( x , col.names = c ( "Note" , "Min" , "Max" , "Diff" ) ) ) ,
grade_list ,
names ( grade_list )
)
for ( i in seq ( res ) ) {
cat ( '\n' , '<details class="details-example"><summary>↳' , names ( res [ i ] ) , '</summary>' )
print ( res [[ i ] ] )
cat ( '\n</details>' )
}
↳ Max Punkte: 20
Note
Min
Max
Diff
1.0
19
20.0
1.0
1.3
18
18.5
0.5
1.7
17
17.5
0.5
2.0
16
16.5
0.5
2.3
15
15.5
0.5
2.7
14
14.5
0.5
3.0
13
13.5
0.5
3.3
12
12.5
0.5
3.7
11
11.5
0.5
4.0
10
10.5
0.5
5.0
0
9.5
9.5
↳ Max Punkte: 20.5
Note
Min
Max
Diff
1.0
19.5
20.5
1.0
1.3
18.5
19.0
0.5
1.7
17.5
18.0
0.5
2.0
16.5
17.0
0.5
2.3
15.5
16.0
0.5
2.7
14.5
15.0
0.5
3.0
13.5
14.0
0.5
3.3
12.5
13.0
0.5
3.7
11.5
12.0
0.5
4.0
10.5
11.0
0.5
5.0
0.0
10.0
10.0
↳ Max Punkte: 21
Note
Min
Max
Diff
1.0
20.0
21.0
1.0
1.3
19.0
19.5
0.5
1.7
18.0
18.5
0.5
2.0
17.0
17.5
0.5
2.3
16.0
16.5
0.5
2.7
15.0
15.5
0.5
3.0
14.0
14.5
0.5
3.3
13.0
13.5
0.5
3.7
12.0
12.5
0.5
4.0
10.5
11.5
1.0
5.0
0.0
10.0
10.0
↳ Max Punkte: 21.5
Note
Min
Max
Diff
1.0
20.5
21.5
1.0
1.3
19.5
20.0
0.5
1.7
18.5
19.0
0.5
2.0
17.5
18.0
0.5
2.3
16.5
17.0
0.5
2.7
15.5
16.0
0.5
3.0
14.0
15.0
1.0
3.3
13.0
13.5
0.5
3.7
12.0
12.5
0.5
4.0
11.0
11.5
0.5
5.0
0.0
10.5
10.5
↳ Max Punkte: 22
Note
Min
Max
Diff
1.0
21.0
22.0
1.0
1.3
20.0
20.5
0.5
1.7
19.0
19.5
0.5
2.0
18.0
18.5
0.5
2.3
16.5
17.5
1.0
2.7
15.5
16.0
0.5
3.0
14.5
15.0
0.5
3.3
13.5
14.0
0.5
3.7
12.5
13.0
0.5
4.0
11.0
12.0
1.0
5.0
0.0
10.5
10.5
↳ Max Punkte: 22.5
Note
Min
Max
Diff
1.0
21.5
22.5
1.0
1.3
20.5
21.0
0.5
1.7
19.5
20.0
0.5
2.0
18.0
19.0
1.0
2.3
17.0
17.5
0.5
2.7
16.0
16.5
0.5
3.0
15.0
15.5
0.5
3.3
13.5
14.5
1.0
3.7
12.5
13.0
0.5
4.0
11.5
12.0
0.5
5.0
0.0
11.0
11.0
↳ Max Punkte: 23
Note
Min
Max
Diff
1.0
22.0
23.0
1.0
1.3
21.0
21.5
0.5
1.7
20.0
20.5
0.5
2.0
18.5
19.5
1.0
2.3
17.5
18.0
0.5
2.7
16.5
17.0
0.5
3.0
15.0
16.0
1.0
3.3
14.0
14.5
0.5
3.7
13.0
13.5
0.5
4.0
11.5
12.5
1.0
5.0
0.0
11.0
11.0
↳ Max Punkte: 23.5
Note
Min
Max
Diff
1.0
22.5
23.5
1.0
1.3
21.5
22.0
0.5
1.7
20.0
21.0
1.0
2.0
19.0
19.5
0.5
2.3
18.0
18.5
0.5
2.7
16.5
17.5
1.0
3.0
15.5
16.0
0.5
3.3
14.5
15.0
0.5
3.7
13.0
14.0
1.0
4.0
12.0
12.5
0.5
5.0
0.0
11.5
11.5
↳ Max Punkte: 24
Note
Min
Max
Diff
1.0
23.0
24.0
1.0
1.3
22.0
22.5
0.5
1.7
20.5
21.5
1.0
2.0
19.5
20.0
0.5
2.3
18.0
19.0
1.0
2.7
17.0
17.5
0.5
3.0
16.0
16.5
0.5
3.3
14.5
15.5
1.0
3.7
13.5
14.0
0.5
4.0
12.0
13.0
1.0
5.0
0.0
11.5
11.5
↳ Max Punkte: 24.5
Note
Min
Max
Diff
1.0
23.5
24.5
1.0
1.3
22.5
23.0
0.5
1.7
21.0
22.0
1.0
2.0
20.0
20.5
0.5
2.3
18.5
19.5
1.0
2.7
17.5
18.0
0.5
3.0
16.0
17.0
1.0
3.3
15.0
15.5
0.5
3.7
13.5
14.5
1.0
4.0
12.5
13.0
0.5
5.0
0.0
12.0
12.0
↳ Max Punkte: 25
Note
Min
Max
Diff
1.0
24.0
25.0
1.0
1.3
22.5
23.5
1.0
1.7
21.5
22.0
0.5
2.0
20.0
21.0
1.0
2.3
19.0
19.5
0.5
2.7
17.5
18.5
1.0
3.0
16.5
17.0
0.5
3.3
15.0
16.0
1.0
3.7
14.0
14.5
0.5
4.0
12.5
13.5
1.0
5.0
0.0
12.0
12.0
↳ Max Punkte: 25.5
Note
Min
Max
Diff
1.0
24.5
25.5
1.0
1.3
23.0
24.0
1.0
1.7
22.0
22.5
0.5
2.0
20.5
21.5
1.0
2.3
19.5
20.0
0.5
2.7
18.0
19.0
1.0
3.0
17.0
17.5
0.5
3.3
15.5
16.5
1.0
3.7
14.5
15.0
0.5
4.0
13.0
14.0
1.0
5.0
0.0
12.5
12.5
↳ Max Punkte: 26
Note
Min
Max
Diff
1.0
25.0
26.0
1.0
1.3
23.5
24.5
1.0
1.7
22.5
23.0
0.5
2.0
21.0
22.0
1.0
2.3
19.5
20.5
1.0
2.7
18.5
19.0
0.5
3.0
17.0
18.0
1.0
3.3
16.0
16.5
0.5
3.7
14.5
15.5
1.0
4.0
13.0
14.0
1.0
5.0
0.0
12.5
12.5
↳ Max Punkte: 26.5
Note
Min
Max
Diff
1.0
25.5
26.5
1.0
1.3
24.0
25.0
1.0
1.7
23.0
23.5
0.5
2.0
21.5
22.5
1.0
2.3
20.0
21.0
1.0
2.7
19.0
19.5
0.5
3.0
17.5
18.5
1.0
3.3
16.0
17.0
1.0
3.7
15.0
15.5
0.5
4.0
13.5
14.5
1.0
5.0
0.0
13.0
13.0
↳ Max Punkte: 27
Note
Min
Max
Diff
1.0
26.0
27.0
1.0
1.3
24.5
25.5
1.0
1.7
23.0
24.0
1.0
2.0
22.0
22.5
0.5
2.3
20.5
21.5
1.0
2.7
19.0
20.0
1.0
3.0
18.0
18.5
0.5
3.3
16.5
17.5
1.0
3.7
15.0
16.0
1.0
4.0
13.5
14.5
1.0
5.0
0.0
13.0
13.0
↳ Max Punkte: 27.5
Note
Min
Max
Diff
1.0
26.5
27.5
1.0
1.3
25.0
26.0
1.0
1.7
23.5
24.5
1.0
2.0
22.0
23.0
1.0
2.3
21.0
21.5
0.5
2.7
19.5
20.5
1.0
3.0
18.0
19.0
1.0
3.3
16.5
17.5
1.0
3.7
15.5
16.0
0.5
4.0
14.0
15.0
1.0
5.0
0.0
13.5
13.5
↳ Max Punkte: 28
Note
Min
Max
Diff
1.0
27.0
28.0
1.0
1.3
25.5
26.5
1.0
1.7
24.0
25.0
1.0
2.0
22.5
23.5
1.0
2.3
21.0
22.0
1.0
2.7
20.0
20.5
0.5
3.0
18.5
19.5
1.0
3.3
17.0
18.0
1.0
3.7
15.5
16.5
1.0
4.0
14.0
15.0
1.0
5.0
0.0
13.5
13.5
↳ Max Punkte: 28.5
Note
Min
Max
Diff
1.0
27.5
28.5
1.0
1.3
26.0
27.0
1.0
1.7
24.5
25.5
1.0
2.0
23.0
24.0
1.0
2.3
21.5
22.5
1.0
2.7
20.0
21.0
1.0
3.0
19.0
19.5
0.5
3.3
17.5
18.5
1.0
3.7
16.0
17.0
1.0
4.0
14.5
15.5
1.0
5.0
0.0
14.0
14.0
↳ Max Punkte: 29
Note
Min
Max
Diff
1.0
28.0
29.0
1
1.3
26.5
27.5
1
1.7
25.0
26.0
1
2.0
23.5
24.5
1
2.3
22.0
23.0
1
2.7
20.5
21.5
1
3.0
19.0
20.0
1
3.3
17.5
18.5
1
3.7
16.0
17.0
1
4.0
14.5
15.5
1
5.0
0.0
14.0
14
↳ Max Punkte: 29.5
Note
Min
Max
Diff
1.0
28.5
29.5
1.0
1.3
27.0
28.0
1.0
1.7
25.5
26.5
1.0
2.0
24.0
25.0
1.0
2.3
22.5
23.5
1.0
2.7
21.0
22.0
1.0
3.0
19.5
20.5
1.0
3.3
18.0
19.0
1.0
3.7
16.5
17.5
1.0
4.0
15.0
16.0
1.0
5.0
0.0
14.5
14.5
↳ Max Punkte: 30
Note
Min
Max
Diff
1.0
28.5
30.0
1.5
1.3
27.0
28.0
1.0
1.7
25.5
26.5
1.0
2.0
24.0
25.0
1.0
2.3
22.5
23.5
1.0
2.7
21.0
22.0
1.0
3.0
19.5
20.5
1.0
3.3
18.0
19.0
1.0
3.7
16.5
17.5
1.0
4.0
15.0
16.0
1.0
5.0
0.0
14.5
14.5
↳ Max Punkte: 30.5
Note
Min
Max
Diff
1.0
29.0
30.5
1.5
1.3
27.5
28.5
1.0
1.7
26.0
27.0
1.0
2.0
24.5
25.5
1.0
2.3
23.0
24.0
1.0
2.7
21.5
22.5
1.0
3.0
20.0
21.0
1.0
3.3
18.5
19.5
1.0
3.7
17.0
18.0
1.0
4.0
15.5
16.5
1.0
5.0
0.0
15.0
15.0
↳ Max Punkte: 31
Note
Min
Max
Diff
1.0
29.5
31.0
1.5
1.3
28.0
29.0
1.0
1.7
26.5
27.5
1.0
2.0
25.0
26.0
1.0
2.3
23.5
24.5
1.0
2.7
22.0
23.0
1.0
3.0
20.5
21.5
1.0
3.3
19.0
20.0
1.0
3.7
17.5
18.5
1.0
4.0
15.5
17.0
1.5
5.0
0.0
15.0
15.0
↳ Max Punkte: 31.5
Note
Min
Max
Diff
1.0
30.0
31.5
1.5
1.3
28.5
29.5
1.0
1.7
27.0
28.0
1.0
2.0
25.5
26.5
1.0
2.3
24.0
25.0
1.0
2.7
22.5
23.5
1.0
3.0
20.5
22.0
1.5
3.3
19.0
20.0
1.0
3.7
17.5
18.5
1.0
4.0
16.0
17.0
1.0
5.0
0.0
15.5
15.5
↳ Max Punkte: 32
Note
Min
Max
Diff
1.0
30.5
32.0
1.5
1.3
29.0
30.0
1.0
1.7
27.5
28.5
1.0
2.0
26.0
27.0
1.0
2.3
24.0
25.5
1.5
2.7
22.5
23.5
1.0
3.0
21.0
22.0
1.0
3.3
19.5
20.5
1.0
3.7
18.0
19.0
1.0
4.0
16.0
17.5
1.5
5.0
0.0
15.5
15.5
↳ Max Punkte: 32.5
Note
Min
Max
Diff
1.0
31.0
32.5
1.5
1.3
29.5
30.5
1.0
1.7
28.0
29.0
1.0
2.0
26.0
27.5
1.5
2.3
24.5
25.5
1.0
2.7
23.0
24.0
1.0
3.0
21.5
22.5
1.0
3.3
19.5
21.0
1.5
3.7
18.0
19.0
1.0
4.0
16.5
17.5
1.0
5.0
0.0
16.0
16.0
↳ Max Punkte: 33
Note
Min
Max
Diff
1.0
31.5
33.0
1.5
1.3
30.0
31.0
1.0
1.7
28.5
29.5
1.0
2.0
26.5
28.0
1.5
2.3
25.0
26.0
1.0
2.7
23.5
24.5
1.0
3.0
21.5
23.0
1.5
3.3
20.0
21.0
1.0
3.7
18.5
19.5
1.0
4.0
16.5
18.0
1.5
5.0
0.0
16.0
16.0
↳ Max Punkte: 33.5
Note
Min
Max
Diff
1.0
32.0
33.5
1.5
1.3
30.5
31.5
1.0
1.7
28.5
30.0
1.5
2.0
27.0
28.0
1.0
2.3
25.5
26.5
1.0
2.7
23.5
25.0
1.5
3.0
22.0
23.0
1.0
3.3
20.5
21.5
1.0
3.7
18.5
20.0
1.5
4.0
17.0
18.0
1.0
5.0
0.0
16.5
16.5
↳ Max Punkte: 34
Note
Min
Max
Diff
1.0
32.5
34.0
1.5
1.3
31.0
32.0
1.0
1.7
29.0
30.5
1.5
2.0
27.5
28.5
1.0
2.3
25.5
27.0
1.5
2.7
24.0
25.0
1.0
3.0
22.5
23.5
1.0
3.3
20.5
22.0
1.5
3.7
19.0
20.0
1.0
4.0
17.0
18.5
1.5
5.0
0.0
16.5
16.5
↳ Max Punkte: 34.5
Note
Min
Max
Diff
1.0
33.0
34.5
1.5
1.3
31.5
32.5
1.0
1.7
29.5
31.0
1.5
2.0
28.0
29.0
1.0
2.3
26.0
27.5
1.5
2.7
24.5
25.5
1.0
3.0
22.5
24.0
1.5
3.3
21.0
22.0
1.0
3.7
19.0
20.5
1.5
4.0
17.5
18.5
1.0
5.0
0.0
17.0
17.0
↳ Max Punkte: 35
Note
Min
Max
Diff
1.0
33.5
35.0
1.5
1.3
31.5
33.0
1.5
1.7
30.0
31.0
1.0
2.0
28.0
29.5
1.5
2.3
26.5
27.5
1.0
2.7
24.5
26.0
1.5
3.0
23.0
24.0
1.0
3.3
21.0
22.5
1.5
3.7
19.5
20.5
1.0
4.0
17.5
19.0
1.5
5.0
0.0
17.0
17.0
↳ Max Punkte: 35.5
Note
Min
Max
Diff
1.0
34.0
35.5
1.5
1.3
32.0
33.5
1.5
1.7
30.5
31.5
1.0
2.0
28.5
30.0
1.5
2.3
27.0
28.0
1.0
2.7
25.0
26.5
1.5
3.0
23.5
24.5
1.0
3.3
21.5
23.0
1.5
3.7
20.0
21.0
1.0
4.0
18.0
19.5
1.5
5.0
0.0
17.5
17.5
↳ Max Punkte: 36
Note
Min
Max
Diff
1.0
34.5
36.0
1.5
1.3
32.5
34.0
1.5
1.7
31.0
32.0
1.0
2.0
29.0
30.5
1.5
2.3
27.0
28.5
1.5
2.7
25.5
26.5
1.0
3.0
23.5
25.0
1.5
3.3
22.0
23.0
1.0
3.7
20.0
21.5
1.5
4.0
18.0
19.5
1.5
5.0
0.0
17.5
17.5
↳ Max Punkte: 36.5
Note
Min
Max
Diff
1.0
35.0
36.5
1.5
1.3
33.0
34.5
1.5
1.7
31.5
32.5
1.0
2.0
29.5
31.0
1.5
2.3
27.5
29.0
1.5
2.7
26.0
27.0
1.0
3.0
24.0
25.5
1.5
3.3
22.0
23.5
1.5
3.7
20.5
21.5
1.0
4.0
18.5
20.0
1.5
5.0
0.0
18.0
18.0
↳ Max Punkte: 37
Note
Min
Max
Diff
1.0
35.5
37.0
1.5
1.3
33.5
35.0
1.5
1.7
31.5
33.0
1.5
2.0
30.0
31.0
1.0
2.3
28.0
29.5
1.5
2.7
26.0
27.5
1.5
3.0
24.5
25.5
1.0
3.3
22.5
24.0
1.5
3.7
20.5
22.0
1.5
4.0
18.5
20.0
1.5
5.0
0.0
18.0
18.0
↳ Max Punkte: 37.5
Note
Min
Max
Diff
1.0
36.0
37.5
1.5
1.3
34.0
35.5
1.5
1.7
32.0
33.5
1.5
2.0
30.0
31.5
1.5
2.3
28.5
29.5
1.0
2.7
26.5
28.0
1.5
3.0
24.5
26.0
1.5
3.3
22.5
24.0
1.5
3.7
21.0
22.0
1.0
4.0
19.0
20.5
1.5
5.0
0.0
18.5
18.5
↳ Max Punkte: 38
Note
Min
Max
Diff
1.0
36.5
38.0
1.5
1.3
34.5
36.0
1.5
1.7
32.5
34.0
1.5
2.0
30.5
32.0
1.5
2.3
28.5
30.0
1.5
2.7
27.0
28.0
1.0
3.0
25.0
26.5
1.5
3.3
23.0
24.5
1.5
3.7
21.0
22.5
1.5
4.0
19.0
20.5
1.5
5.0
0.0
18.5
18.5
↳ Max Punkte: 38.5
Note
Min
Max
Diff
1.0
37.0
38.5
1.5
1.3
35.0
36.5
1.5
1.7
33.0
34.5
1.5
2.0
31.0
32.5
1.5
2.3
29.0
30.5
1.5
2.7
27.0
28.5
1.5
3.0
25.5
26.5
1.0
3.3
23.5
25.0
1.5
3.7
21.5
23.0
1.5
4.0
19.5
21.0
1.5
5.0
0.0
19.0
19.0
↳ Max Punkte: 39
Note
Min
Max
Diff
1.0
37.5
39
1.5
1.3
35.5
37
1.5
1.7
33.5
35
1.5
2.0
31.5
33
1.5
2.3
29.5
31
1.5
2.7
27.5
29
1.5
3.0
25.5
27
1.5
3.3
23.5
25
1.5
3.7
21.5
23
1.5
4.0
19.5
21
1.5
5.0
0.0
19
19.0
↳ Max Punkte: 39.5
Note
Min
Max
Diff
1.0
38
39.5
1.5
1.3
36
37.5
1.5
1.7
34
35.5
1.5
2.0
32
33.5
1.5
2.3
30
31.5
1.5
2.7
28
29.5
1.5
3.0
26
27.5
1.5
3.3
24
25.5
1.5
3.7
22
23.5
1.5
4.0
20
21.5
1.5
5.0
0
19.5
19.5
↳ Max Punkte: 40
Note
Min
Max
Diff
1.0
38
40.0
2.0
1.3
36
37.5
1.5
1.7
34
35.5
1.5
2.0
32
33.5
1.5
2.3
30
31.5
1.5
2.7
28
29.5
1.5
3.0
26
27.5
1.5
3.3
24
25.5
1.5
3.7
22
23.5
1.5
4.0
20
21.5
1.5
5.0
0
19.5
19.5
Die Tabellen können der Standardisierung der Notenberechnung an Universitäten dienen. Allerdings wäre es weit besser einfach Prozent-Werte von den maximal erreichbaren Punkten anzugeben. Dies hat nur Vorteile, aber es gibt hier sicher einige rechtliche und bürokratische Hindernisse. Man könnte aber den Studierenden beides mitteilen, die erreichten Prozente und die Note. Dass die Prozent-Werte aussgekräftiger sind, würden die Studierenden sicher mitbekommen und diese Angabe auch bei anderen Prüfungen fordern. So könnte die kritische Masse für eine Änderung erreicht werden.
Tabellen als csv für Import in OPAL
Nachtrag März 2023: In OPAL kann man jetzt Notenschlüssel als csv importieren. Wir müssen also nur noch die csv-Dateien erstellen:
Map ( function ( x , y ) write.table ( x [ , c ( 1 , 3 , 2 ) ] , file = y , col.names = F ,
row.names = F , sep = ";" ) ,
grade_list ,
paste0 ( substr ( names ( grade_list ) , 13 , 16 ) , ".csv" ) )