Wie kann ich Beobachtungen in der Gruppe schneller einordnen?

8

Ich habe ein wirklich einfaches Problem, aber ich denke wahrscheinlich nicht genug Vektor, um es effizient zu lösen. Ich habe zwei verschiedene Ansätze ausprobiert und sie haben schon lange auf zwei verschiedenen Computern gearbeitet. Ich wünschte, ich könnte sagen, der Wettbewerb hat es spannender gemacht, aber ... bleh.

Rang Beobachtungen in Gruppe

Ich habe lange Daten (viele Zeilen pro Person, eine Zeile pro Personenbeobachtung) und ich möchte grundsätzlich eine Variable, die mir sagt, wie oft die Person schon beobachtet wurde.

Ich habe die ersten beiden Spalten und möchte die dritte :

%Vor%

Jetzt verwende ich zwei Loop-Ansätze. Beide sind quälend langsam (150k Zeilen). Ich bin sicher, dass ich etwas vermisse, aber meine Suchanfragen haben mir noch nicht wirklich geholfen (schwer das Problem zu formulieren).

Danke für irgendwelche Hinweise!

%Vor%     
Ruben 28.05.2011, 15:48
quelle

4 Antworten

4

Einige Alternativen mit den Paketen data.table und dplyr .

data.table:

%Vor%

Oder mit der neuen Funktion rowid ( v1.9.7 + , derzeit also nur verfügbar in die Entwicklungsversion )

%Vor%

geben beide:

%Vor%

Wenn Sie einen wahren Rang wünschen, sollten Sie die Funktion frank verwenden:

%Vor%

dplyr:

%Vor%

beide geben ein ähnliches Ergebnis:

%Vor%     
Jaap 17.02.2016, 08:48
quelle
14

Die Antwort von Marek in diese Frage hat sich bewährt sehr nützlich in der Vergangenheit. Ich schrieb es auf und benutzte es fast täglich, da es schnell und effizient war. Wir verwenden ave() und seq_along() .

%Vor%

Eine weitere Option, die plyr

verwendet %Vor%     
Chase 28.05.2011 16:35
quelle
2

Würde by den Trick machen?

%Vor%     
lindelof 28.05.2011 16:03
quelle
0

Eine weitere Option, die aggregate und rank in der Basis R verwendet:

%Vor%     
989 11.05.2017 15:14
quelle

Tags und Links