Variablen filtern
Variablen filtern
Hallo,
Ich arbeite mit einem Datensatz, bei dem Variablen systematisch mit einer eigenen Endung benannt sind, z.B. auto_abc, haus_abc, garten_abc, ... auto_xyz, haus_xyz, garten_xyz, ... auto_xx, haus_xx, garten_xx usw.
Wie kann ich aus diesem relativ komplexen Datensatz einen verkürzten Datensatz erstellen, der nur bestimmte Variablen enthält, z.B auto_xx, haus_xx und garten_xx, also Variablen mit der Endung "_xx"? Das Problem ist, dass die Variablen im Datensatz nicht so schön geordnet sind wie in meinem Beispiel und bei etwa 6000 Variablen und 20 verschiedenen Endungen geht mir langsam die Geduld aus.
Vielen Dank und beste Grüße,
damkob
Ich arbeite mit einem Datensatz, bei dem Variablen systematisch mit einer eigenen Endung benannt sind, z.B. auto_abc, haus_abc, garten_abc, ... auto_xyz, haus_xyz, garten_xyz, ... auto_xx, haus_xx, garten_xx usw.
Wie kann ich aus diesem relativ komplexen Datensatz einen verkürzten Datensatz erstellen, der nur bestimmte Variablen enthält, z.B auto_xx, haus_xx und garten_xx, also Variablen mit der Endung "_xx"? Das Problem ist, dass die Variablen im Datensatz nicht so schön geordnet sind wie in meinem Beispiel und bei etwa 6000 Variablen und 20 verschiedenen Endungen geht mir langsam die Geduld aus.
Vielen Dank und beste Grüße,
damkob
Re: Variablen filtern
Hallo damkob,
Du müsstest erst grepl() und dann which() auf names(Datensatz) anwenden. Dann bekommst Du einen Indexvektor, den Du dann wieder auf names(Datensatz) anwenden kannst, um die Namen der gewünschten Spalten zu extrahieren.
... oder Du nimmst gleich den Indexvektor, um die Spalten zu extrahieren:
Gruß, Jörg
Du müsstest erst grepl() und dann which() auf names(Datensatz) anwenden. Dann bekommst Du einen Indexvektor, den Du dann wieder auf names(Datensatz) anwenden kannst, um die Namen der gewünschten Spalten zu extrahieren.
... oder Du nimmst gleich den Indexvektor, um die Spalten zu extrahieren:
Code: Alles auswählen
Dataframe[, Indexvektor]
Re: Variablen filtern
Hallo,
Ja, vielen Dank. Was mich nur interessiert ist, könnte man den Datensatz nicht einfach drehen (Fälle zu Variablen und Variablen zu Fällen) und dann einen einfachen code schreiben (Quasi Fälle filtern)?
Greüße,
damkob
P.S. Noch eine Frage: Müsste man nicht mit "subset" arbeiten (um einen Datensatz zu erzeugen)?
Ja, vielen Dank. Was mich nur interessiert ist, könnte man den Datensatz nicht einfach drehen (Fälle zu Variablen und Variablen zu Fällen) und dann einen einfachen code schreiben (Quasi Fälle filtern)?
Greüße,
damkob
P.S. Noch eine Frage: Müsste man nicht mit "subset" arbeiten (um einen Datensatz zu erzeugen)?
Re: Variablen filtern
Hallo damkob,
Eine andere gangbare Alternative kann ein reshape from wide to long sein https://stackoverflow.com/questions/218 ... ong-format
Gruß, Jörg
das Transponieren ist immer dann problematisch, wenn die Spalten verschiedene Typen haben.
Eine andere gangbare Alternative kann ein reshape from wide to long sein https://stackoverflow.com/questions/218 ... ong-format
Es gibt viele Lösungsmöglichkeiten, so dass niemand auf eine bestimmte zurückgreifen muss.P.S. Noch eine Frage: Müsste man nicht mit "subset" arbeiten (um einen Datensatz zu erzeugen)?
Gruß, Jörg
Re: Variablen filtern
Hallo Jörg,
Ja, mit dem "müssen" war eine falsche Wortwahl. Sorry.
Also, ich habe jetzt etwas anderes gemacht. Ich habe mir einen Datensatz erstellt mit nur einer Variable und 7596 "Fällen". Diese Fälle sind in wirlichkeit die Variablen aus dem ursprünglichen Datensatz.
Jetzt würde ich geren mittels subset einen Datensatz erzeugen, wo nur die "Fälle" übrig bleiben, die eine entsprechende Endung haben z.B. "_abc".
Der Datensatz mit dieser einen Variable heißt "VAR-ALL". Und nun geht es um den Befehl subset:
VAR_abc <- subset(VAR-ALL, ???)
Das könnte doch auch funktionieren (wenn man die ??? mit einem entsprechenden Code ersetzt), oder?
Grüße,
damkob
Ja, mit dem "müssen" war eine falsche Wortwahl. Sorry.
Also, ich habe jetzt etwas anderes gemacht. Ich habe mir einen Datensatz erstellt mit nur einer Variable und 7596 "Fällen". Diese Fälle sind in wirlichkeit die Variablen aus dem ursprünglichen Datensatz.
Jetzt würde ich geren mittels subset einen Datensatz erzeugen, wo nur die "Fälle" übrig bleiben, die eine entsprechende Endung haben z.B. "_abc".
Der Datensatz mit dieser einen Variable heißt "VAR-ALL". Und nun geht es um den Befehl subset:
VAR_abc <- subset(VAR-ALL, ???)
Das könnte doch auch funktionieren (wenn man die ??? mit einem entsprechenden Code ersetzt), oder?
Grüße,
damkob
Re: Variablen filtern
Hallo damkop,
etwas in mir schreit: Wie ist so ein DAtensatz entstanden, lass uns näher an der Wurzel des Übels ansetzen. Nun gut, wir sind da, wo wir sind. Verstehst Du unter einem Datensatz einen Dataframe, also eine Tabelle? Oder was verstehst Du darunter?
Bist Du sicher, dass Du in R arbeitest und dass Du eine Variable VAR-ALL hast?? Normalerweise würde R diesen Bindestrich als Minus interpretieren und eine Fehlermeldung machen. Sollte die Variable VAR_ALL heißen, poste bitte mal das Ergebnis von
LG,
Bernhard
etwas in mir schreit: Wie ist so ein DAtensatz entstanden, lass uns näher an der Wurzel des Übels ansetzen. Nun gut, wir sind da, wo wir sind. Verstehst Du unter einem Datensatz einen Dataframe, also eine Tabelle? Oder was verstehst Du darunter?
Bist Du sicher, dass Du in R arbeitest und dass Du eine Variable VAR-ALL hast?? Normalerweise würde R diesen Bindestrich als Minus interpretieren und eine Fehlermeldung machen. Sollte die Variable VAR_ALL heißen, poste bitte mal das Ergebnis von
Code: Alles auswählen
str(VAR_ALL)
summary(VAR_ALL)
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Variablen filtern
Hallo,
Ich habe die Variable nun in "variable" umbenannt.
Der Datensatz besteht jetzt aus einer Spalte (variablen) und 7596 "Fällen". Und nun will ich einfach alle Fälle mit einer bestimmten Endung aus dem Datensatz entfernen und als einen neuen Datesatz mit nur einer Spalte (variablen) und x Fällen (alle mit der gleichen Endung) bekommen. Das würde mir schon reichen.
Grüße,
damkob
Ich habe die Variable nun in "variable" umbenannt.
Der Datensatz besteht jetzt aus einer Spalte (variablen) und 7596 "Fällen". Und nun will ich einfach alle Fälle mit einer bestimmten Endung aus dem Datensatz entfernen und als einen neuen Datesatz mit nur einer Spalte (variablen) und x Fällen (alle mit der gleichen Endung) bekommen. Das würde mir schon reichen.
Grüße,
damkob
Re: Variablen filtern
Hier das Output
'data.frame': 7596 obs. of 1 variable:
$ variablen: Factor w/ 7596 levels "aa_dum ",..: 3370 3477 992 4988 3029 5847 254 5783 5804 5794 ...
- attr(*, "codepage")= int 1252
variablen
aa_dum : 1
aa_nw : 1
aaaz_dum : 1
aaaz_nw : 1
aah_dum : 1
aah_nw : 1
(Other) :7590
'data.frame': 7596 obs. of 1 variable:
$ variablen: Factor w/ 7596 levels "aa_dum ",..: 3370 3477 992 4988 3029 5847 254 5783 5804 5794 ...
- attr(*, "codepage")= int 1252
variablen
aa_dum : 1
aa_nw : 1
aaaz_dum : 1
aaaz_nw : 1
aah_dum : 1
aah_nw : 1
(Other) :7590
Re: Variablen filtern
Hallo,
Also, das hat beispielsweise nicht funktioniert:
VAR_gfz <- subset(VAR_ALL, variablen=="_gfz")
Grüße,
damkob
Also, das hat beispielsweise nicht funktioniert:
VAR_gfz <- subset(VAR_ALL, variablen=="_gfz")
Grüße,
damkob
Re: Variablen filtern
Hallo,
Mit diesem Befehl bin ich einen Schritt weiter geklommen:
VAR_ALL[grep("_gfz",VAR_ALL$variablen),]
[1] ace_gfz brsc_gfz cbs_gfz ...
Das hat also geklappt.
Aber wie implementiere ich diesen Befehl in subset? Und wie bekome ich es, dass diese Variablen im alten Datensatz gelöscht werden?
Grüße,
damkob
Mit diesem Befehl bin ich einen Schritt weiter geklommen:
VAR_ALL[grep("_gfz",VAR_ALL$variablen),]
[1] ace_gfz brsc_gfz cbs_gfz ...
Das hat also geklappt.
Aber wie implementiere ich diesen Befehl in subset? Und wie bekome ich es, dass diese Variablen im alten Datensatz gelöscht werden?
Grüße,
damkob