Datensatz nach mehreren Elementen einer Liste filtern

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

Moderatoren: EDi, jogo

Antworten
Ragnork

Datensatz nach mehreren Elementen einer Liste filtern

Beitrag von Ragnork »

Hallo R-Community,

ich arbeite erst seit Kurzem mit R und hoffe hier Hilf für ein Problem zu bekommen an dem ich gerade hänge...

Also: Ich habe zwei Datensätze (in der Darstellung "Liste 1" und Liste 2") und möchte alle Zeilen aus "Liste 2" die eine Nummer aus "Liste 1" aufweisen in einem neuen Datensatz abspeichern (in "Liste 3"). Die Datensätze sind durch eine Verknüpfungsvariable (hier: Nr. --> gelb) verbindbar. Während in der "Liste 1" jede Nummer nur einmalig vorkommt, können in "Liste 2" mehrere Zeilen der selben Nummer zugewiesen sein.
Bezirkstabellen_Skizze.png
Die einzige Lösung die mir dazu einfällt wäre eine for-Schleife die systematisch jedes Element der "Liste 1" abgeht und in jedem Schritt die Elemente von "Liste 2" nach diesem Kriterium filtert und in einer neuen Liste ablegt. Ist die for-schleife durch alle Elemente der "Liste 1" durch könnte man die so extrahierten Zeilen aus der "Liste 2" wieder in einem Datensatz (in meinem Fall wäre das "Liste 3") zusammensetzen bzw. verbinden.

Das Problem hier ist, dass es imo einerseits keine wirklich elegante Lösung ist und es sich andererseits um einen umfangreichen Datensatz handelt. Das ganze mit einer for-Schleife zu lösen dauert lange und benötigt viel Rechenkraft. Ich muss auf diese Weise mehrere Datensätze verbinden, daher brauche ich hier eine möglichst effiziente Lösung.

Ich habe auch schon versucht "Liste 2" nach einem Vektor, der alle Elemente der "Liste 1" enthält zu filtern (nach dieser Überlegung: Liste3 <- Liste2[Liste2$Nr == Liste1$Nr,]). Leider ohne Erfolg. Ich hoffe ihr könnt mir weiterhelfen. :)
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datensatz nach mehreren Elementen einer Liste filtern

Beitrag von jogo »

Hallo Ragnork,

willkommen im Forum!

Code: Alles auswählen

Liste2[Liste2$Nr %in% List1$Nr,]
Gruß, Jörg
Ragnork

Re: Datensatz nach mehreren Elementen einer Liste filtern

Beitrag von Ragnork »

Wow das ging schnell. :o Danke, hat funktioniert und so einfach. ;) War ich nicht völlig am Holzweg mit dem Filter. :lol:
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Datensatz nach mehreren Elementen einer Liste filtern

Beitrag von jogo »

als etwas größere Geschütze stehen subset() und merge() zur Verfügung.
Antworten