Seite 1 von 1

Kreuztabelle erstellen

Verfasst: So Jul 19, 2020 3:44 pm
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!

Re: Kreuztabelle erstellen

Verfasst: So Jul 19, 2020 5:55 pm
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

Re: Kreuztabelle erstellen

Verfasst: So Jul 19, 2020 8:26 pm
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) 140-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) 109-mal heruntergeladen
Ich hoffe das erklärt es.. :) LG Isabell

Re: Kreuztabelle erstellen

Verfasst: So Jul 19, 2020 10:14 pm
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)


Re: Kreuztabelle erstellen

Verfasst: Mo Jul 20, 2020 8:48 pm
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) 1058 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!

Re: Kreuztabelle erstellen

Verfasst: Di Jul 21, 2020 7:44 am
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

Re: Kreuztabelle erstellen

Verfasst: Di Jul 21, 2020 10:23 am
von Isa18372
1000 Dank!!