Variablen filtern

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

damkob

Variablen filtern

Beitrag von damkob »

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
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variablen filtern

Beitrag von jogo »

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:

Code: Alles auswählen

Dataframe[, Indexvektor]
Gruß, Jörg
damkob

Re: Variablen filtern

Beitrag von damkob »

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)?
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Variablen filtern

Beitrag von jogo »

Hallo damkob,
damkob hat geschrieben: Mi Jul 05, 2017 10:52 am 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)?
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
P.S. Noch eine Frage: Müsste man nicht mit "subset" arbeiten (um einen Datensatz zu erzeugen)?
Es gibt viele Lösungsmöglichkeiten, so dass niemand auf eine bestimmte zurückgreifen muss.

Gruß, Jörg
damkob

Re: Variablen filtern

Beitrag von damkob »

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
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Variablen filtern

Beitrag von bigben »

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

Code: Alles auswählen

str(VAR_ALL)
summary(VAR_ALL)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
damkob

Re: Variablen filtern

Beitrag von damkob »

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
damkob

Re: Variablen filtern

Beitrag von damkob »

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
damkob

Re: Variablen filtern

Beitrag von damkob »

Hallo,

Also, das hat beispielsweise nicht funktioniert:
VAR_gfz <- subset(VAR_ALL, variablen=="_gfz")

Grüße,
damkob
damkob

Re: Variablen filtern

Beitrag von damkob »

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
Antworten