Legen Sie den Spaltenwert aus einer Sammlung anderer Spalten fest, die von einer Selektorspalte auf einer Zeile-für-Zeile-Basis ausgewählt wurden (Durchführen einer Suche).

8

Betrachten Sie den folgenden Datenrahmen:

%Vor%

Ich möchte die Spalte Wert auf der Grundlage der Spalte Auswählen auf der Basis der Spalten A, B und C Zeile für Zeile effizient zuweisen.

Zum Beispiel möchte ich in Zeile 1 Wert gleich dem Element in Spalte B sein - d. h. Wert [1] = 10.

Meine aktuelle Methode ist die Verwendung einer for-Schleife:

%Vor%

Was zur gewünschten Ausgabe führt:

%Vor%

Gibt es dafür einen effizienteren oder alternativen Weg? Ich denke, das ist eine Art von Merge () oder Tabellen Join Type Operation.

P.S. Ich war mir nicht ganz sicher, wie ich diese Operation beschreiben sollte - alle Vorschläge für eine bessere Frage / Beschreibung sind ebenfalls willkommen.

    
Simon 05.08.2013, 11:13
quelle

1 Antwort

7

Ich würde Matrixindizierung und match verwenden. Dieser Ansatz wird vektorisiert, also viel schneller als eine for oder apply Schleife Ihnen geben würde:

%Vor%

Wenn Sie mit der Matrix-Indexierung nicht vertraut sind, ist dies in ?"[" :

dokumentiert
  

Eine dritte Form der Indexierung erfolgt über eine numerische Matrix mit der einen Spalte für jede Dimension: Jede Zeile der Indexmatrix wählt dann ein einzelnes Element des Arrays aus und das Ergebnis ist ein Vektor

    
flodel 05.08.2013, 11:21
quelle

Tags und Links