R Programmierung mit "dplyr", um Zeilen auszuwählen und den Index der gefundenen Zeilen zurückzugeben

9

Setup / Problem:

Verwenden von dplyr - Ich kann nicht den optimalen Weg zum Zurückgeben des Zeilenindex einer gefilterten Zeile bestimmen, im Gegensatz zum Zurückgeben des Inhalts der gefilterten Zeile.

Problem:

Ich kann dplyr :: filter () verwenden, um die Zeile aus dem Datenframe zu extrahieren ... das Problem besteht darin, dass der Indexwert der gefilterten Zeile extrahiert und zu einer Liste von Indexeinträgen hinzugefügt werden soll, die die Suchkriterien erfüllen .

Frage:

Gibt es eine einfache Möglichkeit, einen Datenrahmen mit dplyr nach bestimmten Kriterien zu durchsuchen und den numerischen Index jeder gefundenen Zeile zurückzugeben? Der folgende Code verwendet r :: which (), um die Indexzeilen in eine Liste zu extrahieren ...

%Vor%

Der obige Code gibt mir das Ergebnis, das ich möchte, aber ich möchte verstehen, wie man das mit dplyr macht. Es nervt mich ... Ich kann dplyr :: filter () wie folgt verwenden, um die Zeilenzeilen zu extrahieren - wie extrahiere ich den Index jeder gefundenen Zeile ????

%Vor%

R Einrichtung

Version                _
Plattform x86_64-apple-darwin13.4.0
Bogen x86_64
os darwin13.4.0
System x86_64, darwin13.4.0
Status
Haupt 3
Moll 1,2
Jahr 2014
Monat 10
Tag 31
svn rev 66913
Sprache R
version.string R Version 3.1.2 (2014-10-31) Nickname Kürbis Helm

dplyr-Version 0.3.0.2

Setup Mac OS X

Modellname: MacBook Pro   Modellbezeichner: MacBookPro10,1   Prozessorname: Intel Core i7   Prozessorgeschwindigkeit: 2,7 GHz   Anzahl der Prozessoren: 1   Gesamtanzahl der Kerne: 4   L2-Cache (pro Kern): 256 KB   L3 Cache: 8 MB   Speicher: 16 GB

    
Technophobe01 17.01.2015, 22:06
quelle

2 Antworten

6

Wenn Sie dplyr & gt; = 0.4 verwenden, können Sie Folgendes tun:

%Vor%

Obwohl Sie das als eine Verbesserung gegenüber

betrachten würden %Vor%

entgeht mir.

    
Ista 18.01.2015 02:03
quelle
5

Vorgeschlagene Lösung

Hier ist ein Beispiel von dem, was ich versuche zu tun ... das ist eine Art Lösung, aber ich mag es nicht. Danke an Richard Scriven für den Zeiger auf 1: n () ...

Fügen Sie dem Datenrahmen manuell eine Indexspalte hinzu ...

Ich habe immer noch nicht herausgefunden, wie man einzelne Indexnummern für jede der Zeilen zurückgibt, die einem bestimmten Kriteriensatz entsprechen ...

Also habe ich dem Beispieldatenrahmen eine Indexspalte hinzugefügt mit dplyr: mutate () . Ich verwende dann dplyr :: filter () im Datenrahmen, um einen Filter für die erforderlichen Kriterien anzuwenden. Dies lässt mich mit der Liste der Zeilen, mit denen ich spielen möchte ... einschließlich eines Index auf den ursprünglichen Datenrahmen ... Ich verwende jetzt dplyr :: select () , um nur die Indexspalte von zu extrahieren die ursprünglichen Datenrahmeneinträge für jede Zeile, die die Kriterien erfüllt ...

%Vor%

Das obige ist für mich doppelte Anstrengung, da der Index im ursprünglichen Datenrahmen implizit ist. Daher ist mein Sinn, dass es eine Möglichkeit geben muss, die Indexmenge der durch den Filter identifizierten Elemente zurückzugeben ... Answers recognised: -)

    
Technophobe01 18.01.2015 00:52
quelle

Tags und Links