Subset nach Zeilen- und Spaltenreziprozität [duplizieren]

7

Ich habe Probleme, einen Datenrahmen basierend auf der Reziprozität von Werten in Zeile und Spalte zu unterteilen.

Hier ist ein Beispiel zur Veranschaulichung des Problems:

%Vor%

Ausgabe:

%Vor%

Ich möchte dieses df unterteilen, indem ich nur die Zeilen mit reziproken Werten halte.

Die resultierende Teilmenge sollte wie folgt aussehen:

%Vor%

Irgendwelche Gedanken würden sehr geschätzt werden!

    
SeekingData 05.09.2017, 15:29
quelle

5 Antworten

6

Eine andere Möglichkeit:

%Vor%

Oder das ist aus irgendeinem Grund in Ihrem kleinen Beispiel doppelt schneller (obwohl langsamer als die Lösung von akrun):

%Vor%

, um die zweite Lösung mit Ihren zusätzlichen Spalten flexibel zu halten:

%Vor%     
Moody_Mudskipper 05.09.2017, 15:43
quelle
9

Wir könnten nach Zeilen sortieren und dann duplicated

verwenden %Vor%     
akrun 05.09.2017 15:33
quelle
2
%Vor%     
amonk 05.09.2017 15:50
quelle
2

Sie können auch pmin und pmax verwenden, um beim Gruppieren zu helfen, und dann nach allen Gruppen mit mehr als einem Eintrag filtern, d. h.

%Vor%

was gibt,

%Vor%
    
Sotos 05.09.2017 16:20
quelle
1

Ähnlich wie bei der Methode von akrun, rbind data.frame für eine Kopie mit umgekehrten Spalten. Finde Duplikate, beginnend mit der unteren, die dann TRUE für die Zeilen im ursprünglichen data.frame zurückgibt. Unterteilen Sie diesen logischen Vektor mit [seq_len(nrow(rating.data))] , um einen Vektor mit der entsprechenden Länge in [ zurückzugeben, um eine Teilmenge in den Zeilen zu erhalten.

%Vor%     
lmo 05.09.2017 16:10
quelle

Tags und Links