LesezeichenAbonnierenRSS-Feed abonnieren
motrip94
Fluorite | Level 6

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:

 

R-Code.png

16 ANTWORTEN 16
mfab
Quartz | Level 8

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

Vorwerk_Michael
Calcite | Level 5

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

 

motrip94
Fluorite | Level 6

Wow, das hilft mir sehr Danke !

motrip94
Fluorite | Level 6

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

 

1.PNG

 

2.PNG

CKothenschulte
Obsidian | Level 7

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!

motrip94
Fluorite | Level 6

Hatte wohl '/'  vergessen weg zu machen.. 

 

Es kommt gleiche Fehlermeldung.. Habe alles mögliche versucht ( ' durch " ersetzt , / verändert ) kommt immer gleiche Fehlermeldung

 

3.PNG

Vorwerk_Michael
Calcite | Level 5

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... 😉

motrip94
Fluorite | Level 6

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 .. ^^

jh_ti_bw
Obsidian | Level 7

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

motrip94
Fluorite | Level 6

Habe genau nach der Anleitung gemacht:

 

Ordner in VM eingebunden:5.PNG

 

4.PNG

 

 

Trz kommt Fehlermeldung (Glaube die Syntax ist diesmal richtig)

 

6.PNG

 

Kurt_Bremser
Super User

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.

motrip94
Fluorite | Level 6

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"

Kurt_Bremser
Super User

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-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
  • 16 Antworten
  • 2169 Aufrufe
  • 7 Kudos
  • 7 in Unterhaltung