LesezeichenAbonnierenRSS-Feed abonnieren
Thilo
New User | Level 1

Hallo Leute,

ich habe mir die SAS University Edition runtergeladen.

Dann habe ich ein paar Tutorials der University of California (UCLA) durchgearbeitet: Resources to help you learn and use SAS

Folgendes DataSet wird in den meistens Tutorial verwendet http://www.ats.ucla.edu/stat/data/hsb2.sas7bdat

Zum Problem. Folgendes Verhalten finde ich merkwürdig.

Ich mache

proc print data = mylib.hsb2;

run;

Im Output wird Obs Nummer 159 ausgelassen. Warum?

Viele Grüße

Thilo

14 ANTWORTEN 14
Manfred
Nicht anwendbar

Hallo Thilo,

es gibt keine Obs mit der Nummer 159!

Die wurde vermutlich rausgelöscht mit FSEDIT.

Nur beim Neuerstellen der Datei werden die Nummern wieder fortlaufend vergeben.

Also zum Glück kein Bug ...

Viele Grüße

Manfred

Thilo
New User | Level 1

Ok, ich würde das gerne nachstellen. Ich habe die FSEDIT Prozedur noch nicht gefunden, mit einem Data-Step und DELETE konnte ich es nicht nachstellen.

Deshalb glaube ich dir einfach mal 😉

Kurt_Bremser
Super User

Dem wage ich respektvoll zu widersprechen. PROC CONTENTS zeigt für die (direkt runtergeladene) Version des Datasets keine deleted observations an:

                 Data Set Name    COMMUN.HSB2                             Observations      200
                 Member Type      DATA                                    Variables         11
                 Engine           V9                                      Indexes          
                 Created          Samstag, 09. Januar 1960 05.10 Uhr      Observation Length88
                 Last Modified    Samstag, 09. Januar 1960 05.10 Uhr      Deleted Observations  0 
                 Protection                                                   Compressed        NO
                 Data Set Type                                                Sorted            NO
                 Label                                                                               
                 Data Representation  WINDOWS_32                                                     
                 Encoding         Default                                                        
Manfred
Nicht anwendbar

Hallo Kurt,

ich stimme Dir zu, da müsste Deleted Observations = 1 stehen.

(Was auch so ist, wenn man es nachzuvollziehen versucht!)

Aber die PROC CONTENTS-Angaben dieser Datei sind sowieso

nicht konsistent; beim Erstelldatum 09. Januar 1960 würde ich mal

annehmen, dass diese Information auch nicht richtig ist.

(Laut Wikipedia begann die SAS-Entwicklung erst 1966 ...)

Ich schätze einfach mal, diese Infos ist bei irgend einem Releasewechsel

oder bei einer Änderung des Dateiformates verloren gegangen oder verfälscht

wurden.

Oder diese Infos wurden versehentlich (oder sogar bewusst?) so erzeugt ...

Auf jeden Fall sind nicht die Daten selbst fehlerhaft, sondern nur die Angaben

in PROC CONTENTS.

Viele Grüße

Manfred

Thilo
New User | Level 1

Ich habe ein Ticket bei der UCLA eingestellt. Vielleicht kommt ja was zurück.

Kurt_Bremser
Super User

Sieht nach einem Problem mit der Filestruktur aus. Ich habs auf meinen Server kopiert (AIX64, 9.2) und dort den selben Effekt erlebt. Nachdem ich dann mit einem simplen Data Step eine Kopie angefertigt habe, hat der Proc Print richtig ausgegeben.

Du verlierst aber keinen Satz, der erste Proc Print gibt als letzte Obs 201 an, obwohl nur 200 vorhanden sind! Der Print verzählt sich und springt von 158 auf 160.

Kurt_Bremser
Super User

Nochwas: Proc Contents zeigt für die ursprüngliche Version des Files Data Representation=Windows_32 an, und wenn man obs in first data page und max obs per page addiert, erhält man (tataa) 159. Da passiert also was beim Sprung von der 2. zur 3. Page im File.

Thilo
New User | Level 1

Ok, bin selber auf mac unterwegs. Wenn man das File mit dem SAS-Universal-Viewer öffnet, sollte es diesen Sprung, von 158 zu 160 ebenfalls anzeigen, oder?

Thilo
New User | Level 1

Ich habe eine Antwort von der UCLA erhalten:


Greetings,

No, I cannot reproduce this behavior in SAS.  If you think that the problem is caused by moving the dataset from one operating system to another, you might want to try using proc migrate.  If that does not help, I would suggest that you contact either SAS Technical Support or the SAS listserv (https://listserv.uga.edu/cgi-bin/wa?A0=SAS-L ).

I am sorry that we cannot be of further assistance to you.

Kurt_Bremser
Super User

Mehr und mehr glaub ich hier an ein Problem mit der internen Struktur des Files. Ich halte das nicht für einen Zufall, dass der "Verzähler" an einer Page-Grenze geschieht.

Welche SAS Version auf welcher Plattform benutzt Du?

Thilo
New User | Level 1

Ich benutze die SAS University Edition auf Mac OS X.

Was meinst du mit interner Struktur des Files?

Kurt_Bremser
Super User

SAS organisiert ein .sas7bdat in Blöcken/Pages (4K, 8K, 16K,..., die Größe hängt von Bitness und Systemumgebung ab).

Je nach Satzgröße passen da eine bestimmte Anzahl Sätze in eine Page, ein gewisser Rest verbleibt in jeder Page.

Da in der ersten Page auch die gesamten Header-Informationen drin sind, hält sie natürlich weniger Sätze als die anderen. Das zeigt sich in den Angaben "obs in first data page" und "max obs per page" aus PROC CONTENTS.

Worauf ich eben hinauswollte, ist die Tatsache, dass in dem original auf Windows produzierten Dataset die beiden Zahlen den "Fehlerpunkt" ergeben, also das Überspringen einer Satznummer am Übergang von der 2. zur 3. Page passiert. Das sieht total verdächtig aus.

"Ich glaube nicht an Zufälle" (Leroy Jethro Gibbs)

Noch ein paar "Schmankerln":

Ich gehe davon aus, dass die Windows-Maschine, auf der das erzeugt wurde, kein Datum gesetzt hatte und einfach losgezählt hat, daher das merkwürdige Erstellungsdatum. Wenn nicht irgendein lustiger Student seine Fähigkeiten im Rumspielen mit binären Daten unter Beweis stellen wollte Smiley (zwinkernd)

Als "Release Created" wird 7.0000M0 angegeben. IIRC, war SAS 7 ein ziemlicher Exot und wurde recht schnell von SAS 8 abgelöst, falls es nicht überhaupt nur ein Entwicklungsrelease war; wir sind direkt von 6.12 auf 8 gegangen. Kann also sein, dass hier noch ein Bug der Version 7 mitgespielt hat (mit Version 7 kam der Sprung von den .sd1 bzw .ssd01 zu den .sas7bdat Files)

Thilo
New User | Level 1

Alles klar Kurt. Nagut. Ich werde zuhause meine Win32 Büchse rausholen und da noch mal Proc Print machen. Offensichtlich sollte es damit nicht zu dem merkwürdigem Verhalten kommen. Die Support - Mitarbeiterin von der UCLA konnte es ja nicht reproduzieren.

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Diskussionsstatistiken
  • 14 Antworten
  • 3612 Aufrufe
  • 6 Kudos
  • 3 in Unterhaltung