Hallo Leute,
vlt. habe ich hier mehr Erfolg 🙂
Ich schreibe zurzeit an meiner Bachelorthesis (Performance Vergleich zwischen SAS und R).
Ich habe nahezu 0 Wissen in SAS, nur was wir in Uni gemacht haben.
Jetzt zu meiner Frage:
Wie lautet der SAS Code zu dem Pseudocode:
Start1 = Systemzeit;
Erzeuge Daten durch Import
von Datei = „xxxx“ ;
Ende1 = Systemzeit;
Durchlaufzeit1 = ende1 – start1 ;
Erzeuge eine Grafik ;
Ende2 = Systemzeit;
Durchlaufzeit2 = ende2 – ende1 ;
Führe Korrelations-Algorithmus aus ;
Ende3 = Systemzeit;
Durchlaufzeit3 = ende3 – ende2 ;
Führe Lineare Modell-Algorithmus aus;
Ende4 = Systemzeit;
Durchlaufzeit4 = ende4 – ende3 ;
Print Durchlaufzeit 1,2,3,4 ;
Bei R habe ich es hin bekommen, nur leider bei SAS hänge ich seit 5 Tagen dran 😕
Der Code bei R:
Hallo,
schaue Dir doch mal die FULLSTIMER Option an:
http://support.sas.com/rnd/scalability/tools/fullstim/
Das gibt Dir im Log die Zeiten der jeweiligen Programmschritte aus.
Ansonsten stellt sich die Frage, was genau Du bei SAS nicht abgebildet bekommst.
Das Speichern der Zeiten, das Erstellen der Grafik, das Abbilden der Algorithmen?
Viele Grüße
Michael
Moin.
In SAS musst Du ein kleines Programm drumrum bauen, dass die einzelnen Schritte ausführt.
%macro Import_der_Daten;
/* Code für Import */
%mend;
%macro Grafik_erstellen;
/* Code für Grafik */
%mend;
%macro Korrelations_Algorithmus;
/* Code für Korrelations-Algorithmus */
%mend;
%macro Linear_Modell_Algorithmus;
/* Code für Lineare Modell-Algorithmus */
%mend;
%macro Hauptprogramm;
%let ende0 = %sysfunc(datetime());
%Import_der_Daten;
%let ende1 = %sysfunc(datetime());
%Grafik_erstellen;
%let ende2 = %sysfunc(datetime());
%Korrelations_Algorithmus;
%let ende3 = %sysfunc(datetime());
%Linear_Modell_Algorithmus;
%let ende4 = %sysfunc(datetime());
data _null_;
ende0 = &ende0.;
ende1 = &ende1.;
ende2 = &ende2.;
ende3 = &ende3.;
ende4 = &ende4.;
dauer1 = ende1 - ende0;
dauer2 = ende2 - ende1;
dauer3 = ende3 - ende2;
dauer4 = ende4 - ende3;
put @05 "Start" @28 "Ende" @51 "Dauer"
/@1 "1" @05 ende0 datetime20.3 @28 ende1 datetime20.3 @51 dauer1 time11.3
/@1 "2" @05 ende1 datetime20.3 @28 ende2 datetime20.3 @51 dauer2 time11.3
/@1 "3" @05 ende2 datetime20.3 @28 ende3 datetime20.3 @51 dauer3 time11.3
/@1 "4" @05 ende3 datetime20.3 @28 ende4 datetime20.3 @51 dauer4 time11.3
;
run;
%mend;
%Hauptprogramm;
Viele Grüße
Michael
Wow, das hilft mir sehr Danke !
Im Grunde nur die Erweiterung meines Vorschlags in https://communities.sas.com/t5/Base-SAS-Programming/Time-measurement/m-p/328349
Vielen Dank für die hilfreiche Antworten !
Doch leider habe ich jetzt das nächste Problem..
Ich habe eine CSV Datei mit 157 Variablen und 2.500 - 1.250.000 Zeilen ( 10 Dateien)
Ich will es ganz normal Importierten, bzw einlesen mit Infile Methode, es klappt einfach nicht. Habe es auch mit Import methode Probiert, kommt gleiche Meldung
Hatte bei der Uni nie solche Probleme, seitdem ich die "Student-Version" auf Laptop gemacht habe, funktioniert nichts mehr
Hallo @motrip94,
durch den '\' im Filename-Statement nimmt SAS einen relativen Pfad an.
Mit dem Infile-Statement
Infile 'C:\USers\sinca\Downloads\Daten\DataV1.csv';
ist die Datei ansprechbar, sofern es sie in dem Ordner gibt.
Viele Erfolg!
Hatte wohl '/' vergessen weg zu machen..
Es kommt gleiche Fehlermeldung.. Habe alles mögliche versucht ( ' durch " ersetzt , / verändert ) kommt immer gleiche Fehlermeldung
Es scheint, dass SAS auf einem UNIX-System installiert ist, zumindest deutet die Fehlermeldung
"Physical file does not exist, /opt/sasinside/..."
darauf hin. Da kommst Du mit einer Windows-Pfad-Angabe nicht wirklich weit... 😉
Ja die University Edition läuft auf ein UNIX - Virtuelle Maschine. Ist aber auf ein Windows Laptop installiert. Jetzt will ich auf ein Datei zugreifen, das im Windows Laptop gespeichert ist .. ^^
Hi,
du musst auf der virtuellen Maschine ein Windowsverzeichnis mit den Daten in das unix durchreichen (Austauschverzeichnis). In deinem Code musst Du dann den Unixpfad auf das Austauschverzeichnis verwenden.
Viele Grüße
Jan
Habe genau nach der Anleitung gemacht:
Ordner in VM eingebunden:
Trz kommt Fehlermeldung (Glaube die Syntax ist diesmal richtig)
Schau im Analytics U Forum nach, da findest du alle Tips für den richtigen Umgang mit Files.
Bei der Einrichtung der virtuellen Maschine, in der die UE läuft, legt man einen Shared Folder fest, so dass ein dafür eingerichtetes Windows-Verzeichnis im UNIX sichtbar wird (idR als /folders/myfolder). In dieses Verzeichnis kopiert man im Windows die Dateien, um sie dann in UE abrufen zu können. Wichtig ist die Verwendung der UNIX Dateisyntax, inklusive der Tatsache, dass UNIX case-sensitive ist.
Habe das inzwischen hin bekommen,
Eine letzte frage: Beim Infile werden die Variablen nicht erkannt. Da steht nur " 2500 observations and 0 Variables " . Ich könnte bei Input 157 Variablen eintragen, aber das wäre nicht die feine art. Gibt es eine andere möglichkeit vom "Header" die Variablen abzulesen?
PS: es sind only 2 Variablen Num. Rest sind alles "Texte"
input alleine liest nur die Zeile in den Buffer, den man unter dem vorgegebenen Namen _infile_ abrufen kann. Ohne Variablen im input werden auch keine erzeugt.
Ich würde empfehlen, zuerst mal mit proc import einen Test zu machen. Damit erhält man im Log einen automatisch erstellten data step, den man dann adaptieren kann. Proc import verwendet auch die erste Zeile zur Ermittlung der Variablennamen.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!