Missings identifizieren und damit umgehen

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Lis91
Beiträge: 24
Registriert: Sa Mai 18, 2019 1:18 pm

Re: Missings identifizieren und damit umgehen

Beitrag von Lis91 »

jogo hat geschrieben: Mi Mai 22, 2019 8:35 am hm, ok, sieht ganz so aus. Aber warum sieht dann der Output von str(df) nicht so ähnlich aus wie bei dem Dataframe iris?

Code: Alles auswählen

> str(iris)
'data.frame':	150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Kannst Du bitte mal spaßeshalber noch den Output von

Code: Alles auswählen

length(df)
zeigen?
Ansonsten hilft nur: viewtopic.php?f=20&t=11 bzw. https://stackoverflow.com/questions/596 ... le-example

Gruß, Jörg
Guten Morgen! Das oben war ein Auszug:

Code: Alles auswählen

$ Var_021                    : num  1 1 3 2 1 2 NA 1 2 2 ...
Der Rest unterscheidet sich aber nicht groß...

Code: Alles auswählen

> str(df)
'data.frame':	135 obs. of  488 variables:
 $ VPN                         : num  1 2 3 4 5 6 7 8 9 10 ...
 $ Sex                         : num  1 1 2 2 1 1 1 2 2 2 ...
 $ Age                         : num  32 58 19 25 59 66 27 52 42 58 ...
 $ BAB_001                    : num  2 3 3 3 2 1 NA 3 3 3 ...
 $ BAB_002                    : num  1 3 3 3 4 2 NA 2 2 1 ...
 $ BAB_003                    : num  1 2 3 4 2 3 NA 4 4 2 ...
 $ BAB_004                    : num  4 3 3 3 4 3 NA 3 3 2 ...
 $ BAB_005                    : num  2 1 2 2 1 1 NA 2 2 2 ...
 [list output truncated]
Wenn ich length(df) eingebe, erhalte ich folgenden Output:

Code: Alles auswählen

[1] 488
Angenommen, ich wollte die Variablen BAB_001 bis BAB_005 in einen extra Datensatz extrahieren. Wäre das mit einem Bind-Befehl möglich? Wahrscheinlich in etwa so, oder?

Code: Alles auswählen

df2 <- c("BAB_001", "BAB_002",...)
Liebe Grüße & danke :)
Lis
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Missings identifizieren und damit umgehen

Beitrag von jogo »

Lis91 hat geschrieben: Mi Mai 22, 2019 10:15 am

Code: Alles auswählen

$ Var_021                    : num  1 1 3 2 1 2 NA 1 2 2 ...
Der Rest unterscheidet sich aber nicht groß...
Aber Du merkst selber, dass Du bestimmte Anforderungen (z.B. das Rauslösen einiger Spalten) jetzt viel besser (nämlich konkret) beschreiben kannst, oder?

Code: Alles auswählen

> str(df)
'data.frame':	135 obs. of  488 variables:
 $ VPN                         : num  1 2 3 4 5 6 7 8 9 10 ...
 $ Sex                         : num  1 1 2 2 1 1 1 2 2 2 ...
 $ Age                         : num  32 58 19 25 59 66 27 52 42 58 ...
 $ BAB_001                    : num  2 3 3 3 2 1 NA 3 3 3 ...
 $ BAB_002                    : num  1 3 3 3 4 2 NA 2 2 1 ...
 $ BAB_003                    : num  1 2 3 4 2 3 NA 4 4 2 ...
 $ BAB_004                    : num  4 3 3 3 4 3 NA 3 3 2 ...
 $ BAB_005                    : num  2 1 2 2 1 1 NA 2 2 2 ...
 [list output truncated]
Angenommen, ich wollte die Variablen BAB_001 bis BAB_005 in einen extra Datensatz extrahieren. Wäre das mit einem Bind-Befehl möglich? Wahrscheinlich in etwa so, oder?

Code: Alles auswählen

df2 <- c("BAB_001", "BAB_002",...)
So geht das nicht (hier wird ja nur ein character-Vektor df2 erzeugt). Aber es gibt verschiedene Möglichkeiten, einige:
1. df2 <- df[4:8]
2. df2 <- df[c("BAB_001", "BAB_002",...)]
3. df2 <- df[, c("BAB_001", "BAB_002",...)]
4. df2 <- df[sprintf("BAB_%03i", 1:5)]

Das Rauslösen von Spalten aus einem Dataframe will gut überlegt sein. Meistens ist es besser, alles in einer Struktur beisammen zu lassen und einen integer- oder character-Vektor für den Zugriff auf die interssierenden Spalten zu verwenden.
Dies hängt natürlich davon ab, wie die weiteren Berechnungen aussehen.

BTW:
Zitat aus Deiner Anfangsnachricht:
ich bräuchte nochmal eure Hilfe. Ich habe 21 Spalten, ...
Dein Dataframe hat 488 Spalten!

Gruß, Jörg
Lis91
Beiträge: 24
Registriert: Sa Mai 18, 2019 1:18 pm

Re: Missings identifizieren und damit umgehen

Beitrag von Lis91 »

jogo hat geschrieben: Mi Mai 22, 2019 10:48 am
Lis91 hat geschrieben: Mi Mai 22, 2019 10:15 am

Code: Alles auswählen

$ Var_021                    : num  1 1 3 2 1 2 NA 1 2 2 ...
Der Rest unterscheidet sich aber nicht groß...
Aber Du merkst selber, dass Du bestimmte Anforderungen (z.B. das Rauslösen einiger Spalten) jetzt viel besser (nämlich konkret) beschreiben kannst, oder?

Code: Alles auswählen

> str(df)
'data.frame':	135 obs. of  488 variables:
 $ VPN                         : num  1 2 3 4 5 6 7 8 9 10 ...
 $ Sex                         : num  1 1 2 2 1 1 1 2 2 2 ...
 $ Age                         : num  32 58 19 25 59 66 27 52 42 58 ...
 $ BAB_001                    : num  2 3 3 3 2 1 NA 3 3 3 ...
 $ BAB_002                    : num  1 3 3 3 4 2 NA 2 2 1 ...
 $ BAB_003                    : num  1 2 3 4 2 3 NA 4 4 2 ...
 $ BAB_004                    : num  4 3 3 3 4 3 NA 3 3 2 ...
 $ BAB_005                    : num  2 1 2 2 1 1 NA 2 2 2 ...
 [list output truncated]
Angenommen, ich wollte die Variablen BAB_001 bis BAB_005 in einen extra Datensatz extrahieren. Wäre das mit einem Bind-Befehl möglich? Wahrscheinlich in etwa so, oder?

Code: Alles auswählen

df2 <- c("BAB_001", "BAB_002",...)
So geht das nicht (hier wird ja nur ein character-Vektor df2 erzeugt). Aber es gibt verschiedene Möglichkeiten, einige:
1. df2 <- df[4:8]
2. df2 <- df[c("BAB_001", "BAB_002",...)]
3. df2 <- df[, c("BAB_001", "BAB_002",...)]
4. df2 <- df[sprintf("BAB_%03i", 1:5)]

Das Rauslösen von Spalten aus einem Dataframe will gut überlegt sein. Meistens ist es besser, alles in einer Struktur beisammen zu lassen und einen integer- oder character-Vektor für den Zugriff auf die interssierenden Spalten zu verwenden.
Dies hängt natürlich davon ab, wie die weiteren Berechnungen aussehen.

BTW:
Zitat aus Deiner Anfangsnachricht:
ich bräuchte nochmal eure Hilfe. Ich habe 21 Spalten, ...
Dein Dataframe hat 488 Spalten!

Gruß, Jörg
Hallo Jörg! Ja, inzwischen hab ich zumindest schonmal eine ungefähre Vorstellung, wie die Befehle aufgebaut sind. Oft fehlt mir nur ein kleiner "Denkanstoss" und dann kann ich mir den für mich passenden Befehl zusammenbasteln :ugeek:
Das Rauslösen von Spalten aus dem Dataframe dachte ich wäre vielleicht sinnvoll, da man bei fast 500 Variablen schon schnell mal den Überblick verliert und so kann ich mir spezielle Fragebogendaten nochmal kompakt in einem extra Datensatz anschauen. Vielen Dank übrigens für die Befehle, so hats einwandfrei geklappt :) Und zu meinem Zitat am Anfang: Das war vielleicht etwas missverständlich ausgedrückt. Damit meinte ich nicht, dass ich 21 Spalten habe, sondern die zu einem Fragebogen gehören und ich die aus meinem Datensatz in einen Extra-Datensatz extrahieren will.

Einen schönen Abend und danke nochmal,
Lis
Antworten