Kreuztabelle erstellen

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Isa18372
Beiträge: 4
Registriert: So Jul 19, 2020 3:31 pm

Kreuztabelle erstellen

Beitrag von Isa18372 »

Hallo Zusammen,

ich schreibe aktuell eine Hausarbeit und bin auf ein Problem gestoßen. Leider kann ich nach mehrstündigen Googeln keine Antwort auf meine Frage finden.. Durch die ausgefallenen Präsenzvorlesungen dank Corona sind leider begrenzte R-Kenntnisse vorhanden. Ich habe einen Datensatz eingelesen, der 3 variablen enthält.

1. Altersgruppe
2. Geschlecht
3. Corona-Todesfälle

Durch den Download beim RKI sind in der Spalte Todesfälle Zahlen von 1-8 vertreten, da manchmal mehere Tote auf einmal übermittelt und in einer Zeile erfasst wurden.

Wenn ich nun mit der Funktion table() eine Kreuztabelle erstellen möchte, erscheinen 8 Tabellen, für jede Anzahl Tote eine eigene. Wie kann ich das umgehen, sodass ich nur eine Tabelle erhalte?

Es sollen ausschließlich die Todesfälle pro Alter und pro geschlecht ersichtlich sein.

Vielen Dank im Voraus für die Unterstützung!
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Kreuztabelle erstellen

Beitrag von bigben »

Hallo,

Bitte gib uns ein konkretes Zahlenbeispiel als R Code oder csv und erklär, wie es aufgebaut ist und wie das Ergebnis aussehen soll.

LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Isa18372
Beiträge: 4
Registriert: So Jul 19, 2020 3:31 pm

Re: Kreuztabelle erstellen

Beitrag von Isa18372 »

Hallo Bernard,

lieben Dank für die Hilfe.

Hier ist ein Auszug aus dem Datensatz. (Der originale hat ca. 200.000 Zeilen, deshalb gekürzt)
RKI_COVID19_gekürzt.csv
(1.64 KiB) 34-mal heruntergeladen
Ich habe in R bereits ein data.frame erstellt und auf die Merkmale Altersgruppe, Geschlecht und Todesfälle gefiltert + die unbekannten gelöscht.

Wenn ich nun die table funktion anwende, erhalte ich folgendes Ergebnis:

> table(RKI_COVID19_filtered)
, , AnzahlTodesfall = 1

Geschlecht
Altersgruppe M W
A00-A34 13 6
A35-A59 298 111
A60-A79 1902 871
A80+ 2375 2388

, , AnzahlTodesfall = 2

Geschlecht
Altersgruppe M W
A00-A34 0 0
A35-A59 2 0
A60-A79 49 16
A80+ 109 185

, , AnzahlTodesfall = 3

Geschlecht
Altersgruppe M W
A00-A34 0 0
A35-A59 0 0
A60-A79 5 0
A80+ 15 43

, , AnzahlTodesfall = 4

Geschlecht
Altersgruppe M W
A00-A34 0 0
A35-A59 0 0
A60-A79 1 0
A80+ 9 9

, , AnzahlTodesfall = 5

Geschlecht
Altersgruppe M W
A00-A34 0 0
A35-A59 0 0
A60-A79 1 0
A80+ 0 10

, , AnzahlTodesfall = 6

Geschlecht
Altersgruppe M W
A00-A34 0 0
A35-A59 0 0
A60-A79 0 0
A80+ 0 6

, , AnzahlTodesfall = 7

Geschlecht
Altersgruppe M W
A00-A34 0 0
A35-A59 0 0
A60-A79 0 0
A80+ 1 2

, , AnzahlTodesfall = 8

Geschlecht
Altersgruppe M W
A00-A34 0 0
A35-A59 0 0
A60-A79 0 0
A80+ 0 2

Ich möchte dann, das quasi folgende Kreuztabelle angezeigt wird und nicht 8 Stück:
statistikh.xlsx
(9.71 KiB) 30-mal heruntergeladen
Ich hoffe das erklärt es.. :) LG Isabell
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Kreuztabelle erstellen

Beitrag von bigben »

Denkbar schlechtes Datenbeispiel mit merkwürdigen Anführungszeichen in der Datei und nur einem Geschlecht und nur einer Altersgruppe. Ich habe die Daten daher minimal abgewandelt. Ich hoffe, das erklärt es.

Code: Alles auswählen

covid <- read.table(header=TRUE, sep=",", quote="", 
              text="Id,IdBundesland,Bundesland,Landkreis,Altersgruppe,Geschlecht,AnzahlFall,AnzahlTodesfall,Meldedatum,IdLandkreis,Datenstand,NeuerFall,NeuerTodesfall,Refdatum,NeuGenesen,AnzahlGenesen,IstErkrankungsbeginn,Altersgruppe2,blob
blob,1,Schleswig-Holstein,SK Flensburg,A15-A34,M,1,0,2020/03/14 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/03/16 00:00:00,0,1,1,Nicht übermittelt
21645641,1,Schleswig-Holstein,SK Flensburg,A15-A34,M,1,0,2020/03/19 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/03/13 00:00:00,0,1,1,Nicht übermittelt
21645642,1,Schleswig-Holstein,SK Flensburg,A15-A34,M,1,0,2020/03/19 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/03/16 00:00:00,0,1,1,Nicht übermittelt
21645643,1,Schleswig-Holstein,SK Flensburg,A15-A34,M,1,0,2020/03/21 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/03/13 00:00:00,0,1,1,Nicht übermittelt
21645644,1,Schleswig-Holstein,SK Flensburg,A15-A34,M,1,0,2020/03/27 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/03/22 00:00:00,0,1,1,Nicht übermittelt
21645645,1,Schleswig-Holstein,SK Flensburg,A15-A34,M,1,0,2020/04/04 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/04/01 00:00:00,0,1,1,Nicht übermittelt
21645646,1,Schleswig-Holstein,SK Flensburg,A15-A34,M,1,0,2020/04/06 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/04/02 00:00:00,0,1,1,Nicht übermittelt
21645647,1,Schleswig-Holstein,SK Flensburg,A35-A99,M,1,0,2020/04/07 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/04/02 00:00:00,0,1,1,Nicht übermittelt
21645648,1,Schleswig-Holstein,SK Flensburg,A35-A99,F,1,0,2020/04/09 00:00:00,01001,19.07.2020, 00:00 Uhr,0,-9,2020/04/05 00:00:00,0,1,1,Nicht übermittelt")

str(covid)

aggregate(covid$AnzahlFall, by = list(covid$Altersgruppe, covid$Geschlecht), FUN=sum)

---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Isa18372
Beiträge: 4
Registriert: So Jul 19, 2020 3:31 pm

Re: Kreuztabelle erstellen

Beitrag von Isa18372 »

Danke, das kommt dem auf jeden Fall sehr nah! Und sorry, ich bin wie gesagt ein blutiger Anfänger und wäre froh wenn ich wüsste was ich da tue :D

Das Ergebnis der Funktion ist folgendes:
aggregierte Tabelle.PNG
aggregierte Tabelle.PNG (7.31 KiB) 445 mal betrachtet
Gibt es noch die Möglichkeit, dass Altersgruppe und Geschlecht nicht mehr als Variable sondern als Spalten bzw. Zeilenbeschriftung fungieren?

Dann wäre ich wunschlos glücklich.. Danke vorab!
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Kreuztabelle erstellen

Beitrag von bigben »

Mir persönlich erscheint die Tabellendarstellung wie aggregate sie ausgibt als praktischer, wenn man mit den Daten weiter rechnen möchte, aber natürlich sieht R auch eine Lösung für diese Frage vor. Aber wenn wir Dich wunschlos glücklich machen können, dann wollen wir die Chance natürlich nicht ungenutzt verstreichen lassen:

Code: Alles auswählen

xtabs(covid$AnzahlFall ~ covid$Altersgruppe + covid$Geschlecht)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Isa18372
Beiträge: 4
Registriert: So Jul 19, 2020 3:31 pm

Re: Kreuztabelle erstellen

Beitrag von Isa18372 »

1000 Dank!!
Antworten