2016-08-09 67 views
-1

Ich muss einen Datenrahmen mit Informationen von anderen filtern. Namen und Anzahl der Spalten können variieren, da die Anzahl der Bedingungen für die Auswahl gilt. Zum Beispiel, dass der Datenrahmen würde ich wählen möchte hat die folgende Struktur:Flexibler Filter für Datenrahmen in R


name info_1 info_2 info_3 info_4 value 
var1 aa  123  bb  xx1 120 
var2 bb  345  cc  xx2 520 
var3 aa  122  cc  xx1 640 
var4 dd  345  dd  xx3 540 
... 

und Datenrahmen mit Informationen für Filter:


info_1 info_3 info_4 
    aa  bb xx1 
    bb  cc N/A 
    dd  N/A N/A 
... 

Anzahl der Spalten in der ersten Datenrahmen und die Anzahl der Spalten Das sollte für Filter verwendet werden könnte für verschiedene Datensätze unterschiedlich sein. Gibt es eine effektive Möglichkeit, eine solche Filterung durchzuführen? Ich denke, dass die Filterung in for-Schleife für jede Spalte durchgeführt werden könnte, jedoch ist dies offensichtlich nicht der effizienteste Weg.

+4

Was Ihre erwartete Ausgabe am Beispiel basiert zeigte? Das 'filter' bedeutet, welche Werte Sie behalten/löschen wollen usw.? – akrun

Antwort

0

Sie suchen sicherlich für:

df[Reduce('&', Map(function(u,v) v%in%u, filtering_df, df[names(filtering_df)])),] 

# name info_1 info_2 info_3 info_4 value 
#1 var1  aa 123  bb xx1 120 
#3 var3  aa 122  cc xx1 640 
+0

Ich vermute, dass dies mit einer Join-Operation eleganter gelöst werden könnte, aber wer weiß ... Das erwartete Ergebnis ist nicht klar. – Roland

+0

Vielen Dank! Das ist, was ich gesucht habe. – Alex