Zufällige Permutation von Zeilen eines großen Datensatzes


J Petersen

Ich muss eine zufällige Permutation eines Datensatzes mit über 3 Millionen Zeilen erstellen.

Ich habe versucht, PROC PLAN zu verwenden, basierend auf diesem Beispiel: http://support.sas.com/kb/23/977.html Laut diesem Artikel mit n = (Anzahl der Zeilen)! ermöglicht die zufällige Auswahl einer Permutation. Unglücklicherweise für einen Satz dieser Größe sind das 4,3 * 10 ^ 19668676 Permutationen. Offensichtlich stoße ich hier auf ein Speicherproblem.

Ich habe auch ein Beispiel mit PROC IML gefunden, aber es sieht so aus, als ob mein Unternehmen nicht über die erforderliche Lizenz / Software verfügt, um es zu verwenden.

Kann mir jemand eine gute Möglichkeit bieten, diesen Datensatz zu mischen?

Ludwig61

Es hört sich so an, als ob Sie die Zeilen in eine zufällige Reihenfolge bringen möchten. In diesem Fall besteht die häufigste Methode darin, für jede Zeile einen Zufallswert zu erstellen und dann nach den Zufallswerten zu sortieren:

DATA augmented ;
  SET original ;
  sortval = RAND('UNIFORM') ;
RUN ;

PROC SORT DATA=augmented OUT=permuted(DROP=sortval) ;
  BY sortval ;
RUN ;

Sie können die Aufrufroutine CALL STREAMINIT (seedval) verwenden, wenn Sie die Zufallssequenz zu einem späteren Zeitpunkt präzise reproduzieren möchten.

Sie könnten dies wahrscheinlich auch mit PROC SQL [ungetesteter Code] tun:

PROC SQL ;
  CREATE TABLE permuted(DROP=sortval) AS
    SELECT a.*, RAND('UNIFORM') AS sortval
      FROM original a
      ORDER BY sortval
  ;
QUIT ;

Verwandte Artikel


Zufällige Permutation von IntStream

Neuron: Hie und da ich mich mit indexierten Schleifen finden, für die ich den Auftrag zu einem gewissen zufälligen Reihenfolge vertauschen möge. Ich Übergang in der Regel von so etwas wie for (int i = 0; i < max; i++) { // do stuff with i } zu List<Intege

Zufällige Zeichenfolgen zur Identifizierung eines Datensatzes?

keine Ahnung Ich möchte etwas Ähnliches tun wie imgur und die meisten anderen Websites: Ich möchte eine zufällige Zeichenfolge in der URL verwenden, um den Beitrag zu identifizieren, nach dem ein Benutzer sucht. Die Verwendung einer solchen zufälligen Zeichenf

Upsampling eines großen Datensatzes

Jordan Ford Im Wesentlichen suche ich nach einem Upsampling, um fehlende Stunden zwischen den Vorhersagezeiten zu ergänzen. Ich habe einen Datensatz, der so aussieht: case Regions forecastTime WindSpeed_low 1 1 EAST COA