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.
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%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 )
geben beide:
%Vor% Wenn Sie einen wahren Rang wünschen, sollten Sie die Funktion frank
verwenden:
dplyr:
%Vor%beide geben ein ähnliches Ergebnis:
%Vor% 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()
.
Eine weitere Option, die plyr
Tags und Links optimization r