Hallo Thorben,
thorben-meyer hat geschrieben:Ich kann aus Datenschutzgründen leider keinen Auszug des Datensatzes hochladen aber die Struktur sieht dann in etwa so aus
Für Fragen in Foren ist es immens wertvoll zu lernen, wie man Beispieldatensätze generiert. Ich lasse jetzt zum Zeigen mal die Unterteilung in a, b, c, d weg und wir erstellen folgenden Datensatz:
- Code: Alles auswählen
daten <- data.frame(gender = sample(c("m", "f"), 60, 1, c(.2, .8)),
T1 = sample(1:5, 60, 1),
T2 = sample(c(1:5, NA), 60, 1, c(1,1,1,1,1,5)),
T3 = sample(c(1:5, NA), 60, 1, c(1,1,1,1,1,10)))
head(daten, 20)
Probier das in Deinem R aus. Sieht es so aus, als könnten wir damit was anfangen?
Gut, jetzt wollen wir mehrfach das gleiche machen, deshalb bietet es sich an, eine kleine Funktion zu schreiben. Diese zählt mit der Funktion sum, wie oft ein Wert in einem Vector x nicht NA ist. Ich hoffe doch, die Fehlenden sind in Deinem Datensatz als NA gekennzeichnet? Gut, nachdem sie jedes Element von x mit is.na geprüft hat, zählt sich die TRUE Werte mit sum zusammen und teilt dann durch die Zahl der Werte in x:
- Code: Alles auswählen
anteil_ohne_na <- function(x) sum(!is.na(x)) / length(x)
# Anwendungsbeispiele:
anteil_ohne_na(daten$T1)
anteil_ohne_na(daten$T2)
anteil_ohne_na(daten$T3)
Diese Funktion wollen wir nun nach Geschlecht getrennt anwenden. Das können wir in R auf viele verschiedene Weisen machen. Ich schlage hier jetzt einfach mal die Funktion aggregate vor:
- Code: Alles auswählen
aggregate(daten$T1, by = list(daten$gender), FUN = anteil_ohne_na)
aggregate(daten$T2, by = list(daten$gender), FUN = anteil_ohne_na)
aggregate(daten$T3, by = list(daten$gender), FUN = anteil_ohne_na)
Wie Du siehst, ist der Beitrag recht lang geworden. Deshalb schlagen wir ja vor, weitere Fragen zur Anwendung von R im forum.r-statistik.de zu bearbeiten und hier die Fragen zur Statistik zu stellen.
Viele Grüße,
Bernhard