Zugriff auf bestimmte Zeilen einer SAS Datentabelle in sehr großen Datensätzen

Hi,
ich bin ein sehr unerfahrener Nutzer mit SAS und habe mein Problem bzw Lösung im Forum nicht gefunden.
Ich habe eine SAS Datentabelle mit mehreren Spalten und Zeilen.

Ich möchte nun den Hill-Schätzer berechnen nach der Formel:
Y= 1/k * Summe(von i=1 bis k) über log (x mit Index N-i+1) - log(x mit Index N-k)

Ich habe dafür zwei Schleifen erstellt:

Do while(N_Zaehler>=N_Min); /*N_Zaehler ist die Abbruchbedingung von einem festgelegten Wert*/
    
Do while(N_Gesamt<N_Min);
        
if Beobachtung=N_Gesamt then Wert=C_MEAN;/*N_Gesamt ist mein Index N-i+1(die Spalte,mit der dazugehörigen Zeile), Wert soll die Spalte sein aus der ich aus der richtigen Zeile auslesen will)und der in der inneren Schleife geändert wird*/
        
if Beobachtung=N_Min then Wert2=C_MEAN;/*wie bei N_Gesamt* bleibt in der inneren Schleife fest*/
        
logN_Gesamt=log(Wert);
        logN_Min=log(Wert2);
          sum=sum+(logN_Gesamt-logN_Min);
/*Aufsummierung der ausgerechneten log Werte*/
        
N_Gesamt=N_Gesamt+1;
        
end;
x=(sum/N_Min);
/*in jedem Schritt aktuelles Gamma*/
sum=0;
N_Gesamt=
1;
N_Min=N_Min+
1;
output;
end;
run;
Mein gewünschtes vorgehen kann man sich so vorstellen:

Beobachtung    C_MEAN
1                5987.465
2                5476.98
3                5300.73
4                4999.12
5                4700.23
6                4500

Nun soll mein Prog im 1. Durchlauf die Summe über die Differenz von dem log(C_MEAN)(von Beobachtung 1) und dem log(C_MEAN)(von Beobachtung 2) errechnen.
Im 2. Durchlauf soll mein Prog die Summe über die Differenz von dem log(C_MEAN)(von Beobachtung 1)und dem log(C_MEAN)(von Beobachtung 3)und die Differenz von log(C_MEAN)(von Beobachtung 2)und dem log(C_MEAN)(von Beobachtung 3) usw.
das ganze dann durch die akuelle Anzahl geteilt, also im 1 Schritt k=2, im 2. k=3 usw.

Mein Problem ist, dass ich nicht weis wie ich explizit Zeilen anspreche und diese dann auch dynamisch Durchlafen lassen kann,so dass er zB von Zeile 5 wieder zur Zeile 1 springt, ohne IML zu benutzen.
Es sind sehr große Datensätze, die aus eine SAS Datei eingelesen werden.

Ich hoffe ich konnte mein Problem einigermaßen verständlich schildern und würde mich über einige baldige Antwort sehr freuen.

Vielen Dank im Voraus

Martin

direktes Positionieren auf Datensätze

Ohne Ihr Beispiel komplett zu verstehen:
Man kann auf die Datensätze eines SAS-Datasets nicht nur sequentiell, sondern auch direkt positionierend zugreifen. Hierfür gibt es die POINT-Option in der SET-Anweisung. Folgendes Beispiel liest eine Datei einmal vorwärts und einmal rückwärts.

data classssalc;
   
do i=1 to nobs;
      
set sashelp.class point=i nobs=nobs;
      
output;
   
end;
   
do i=nobs to 1 by -1;
      
set sashelp.class point=i;
      
output;
   
end;
   
stop;
run;
Die NOBS-Option der SET-Anweisung legt eine Variable fest, die der Compiler vor der Ausführung des Data-Steps auf die Anzahl Datensätze in der Eingabedatei setzt.
STOP nicht vergessen, sonst endet der Data-Step nie.

vielen dank

vielen dank andreas,
aber in wirklichkeit
geht es um die Implementierung folgender Formel:

die Beobachtungswerte müssen absteigend sortiert sein

XN ist der größte Beobachtungswert und X(N-k) dass Minimum aus den gerade betrachteten Beobachtungswerten (aus den werten, die derzeit in die Formel Einfließen)

Gamma= 1/k * summe(von i=1 bis k) über [ln X(N-i+1)-ln X(N-k)]

N= alle Beobachtungswerte des datensatzes.

Wobei k soll in jeder Iteration um einen beobachtungswert ansteigen, d.h. es soll stets ein beobachtungwert neu hinzugenommen werden und und gamma neu berechnet werden.
Und die Formel soll für jedes zusätzliche k ein Ergebnis liefern.

Zudem soll eine Abbruchbedingung gesetzt werden können, z.b. dass der algorithmus nur über 15% aller Beobachtungswerte läuft.

Vielen dank für die hilfe!!

Bitte mit offenen Karten spielen

Nochmals bitte ich Sie, wie bereits gestern per E-Mail, Ihren vollständigen Vor- und Nachnamen und Ihre Organisation, bei Studenten den Namen der Hochschule, in Ihr Benutzerprofil einzutragen. Unsere Regeln, denen Sie bei der Registrierung zugestimmt haben, erfordern dies. Bitte haben Sie dafür Verständnis, dass wir nicht nur gerne weiterhelfen, aber auch gerne wissen möchten, mit wem wir es zu tun haben.

vielen Dank für den Hinweis

Hallo,
Herr Mangold,
die mail habe ich leider nicht bemerkt,
die Änderungen habe ich jetzt vorgenommen.
Tut mir leid, dass ich erst jetzt reagiert habe.
Vielen Dank für Ihre Mühe.