LesezeichenAbonnierenRSS-Feed abonnieren
Gairon
Fluorite | Level 6

Hallo zusammen,

 

da ich im Forum noch nichts passendes zu diesem Thema gefunden habe, versuche ich auf diesem Wege mein Glück.

 

Bei dem Export von SAS Dateien / Tabellen nach STATA, mittels des Moduls "SAS/ACCESS Interface to PC Files", werden alle Variablennamen komplett in Kleinbuchstaben umgewandelt. Egal wo sich die Grossbuchstaben auch befinden. Da wir aber die gleiche Schreibweise sowohl in SAS als auch in STATA benötigen, haben wir ein Problem.

 

Gibt es eine Möglich den Exportbefehl entsprechend anzupassen?

 

Hier die Syntax wie wir sie z.Zt. verwenden:

                proc export data=<SAS Datei/Tabelle> outfile= "C:\MeineSTATADatei.dta"; run;

 

Vielen Dank für Eure Hilfe.

 

Gruss

Gairon

5 ANTWORTEN 5
Kurt_Bremser
Super User

Das "Problem" dürfte hier sein, dass STATA case-sensitive ist, SAS aber nicht.

zB

Variable und variable und variabLe sind in SAS immer das gleiche Objekt, in STATA aber nicht.

Würde SAS jetzt alle Namen so weiterleiten, wie sie im aktuellen SAS Dataset sind, könnte das zu Problemen führen, wenn ein Dataset Variable und das andere variable hätte. SAS geht hier den klassischen Weg und setzt alles in Lowercase (sowas hat man früher schon gemacht. Microsoft's LAN Manager hat zB alle DOS Files auf UNIX in Kleinbuchstaben umbenannt, Files mit Großbuchstaben auf UNIX-Seite wurden Richtung DOS ausgefiltert), um Doppeldeutigkeiten zu verhindern.

 

siehe auch https://www.stata.com/statalist/archive/2003-01/msg00408.html

jh_ti_bw
Obsidian | Level 7

Hallo Gairon,

 

wie @Kurt_Bremser schon beschrieben hat, unterscheidet SAS nicht zwischen Groß- und Kleinschreibung. Wenn Ihr Namen verwendet, die sich nur in Schreibweise unterscheiden gibt es da keine Möglichkeit ohne Namensänderungen in beiden Programmen zu arbeiten.

 

in SAS direkt gibt es wahrscheinlich keine direkte Möglichkeit, Groß- und Kleinschreibung zu erhalten. Die Alternative ein SAS-Transportfile zu erstellen, produziert alle Namen in Groß- statt in Kleinbuchstaben.

 

Ich hab noch nie mit Stata gearbeitet, aber es gibt doch die do-Dateien. Vielleich hilft ja dieses kleine Macro. Es exportiert die Datendatei und erstellt eine do Datei, die die kleingeschriebenen Variablen umbenennt.

 

%macro exportDTAWithOrigNames(pfad=, lib=WORK, data=); 
    Data _null_;
        file "&pfad.\&data..do";
        if _N_ = 1 then do;
            put "cd &pfad.";
            put "use &data.";
        end;
        set sashelp.vcolumn ;
        where libname = "%Upcase(&lib.)" AND memname = "&Upcase(&data.)";
        dummy = lowcase(name);
        put "rename " dummy  name;
        file log;
     run;
     Proc export data=&data. outfile = "&pfad.\&data..dta" dbms = dta replace;
     run;
%mend;

data test;
    VaRiAbLe = 8;
    camelCase = 1;
run;

%exportDTAWithOrigNames(pfad=c:\temp, data= test);

Aber wie gesagt, mit Stata habe ich noch nie gearbeitet und hab keine Ahnung, ob das wirklich funktioniert.

VG Jan

 

EDIT: rename Befehl im Macro geändert

Gairon
Fluorite | Level 6

Ersteinmal vielen Dank für eure Antworten.

 

Ich habe dann anscheinend keine andere Wahl, als die Gross-/Kleinschreibung in STATA mittels eines do-Files wiederherzustellen. @jh_ti_bw Danke für den Tipp.

 

Meiner Meinung nach kann das aber nicht Sinn der Sache sein, da müsste SAS nacharbeiten, denn das Modul ist ja nicht gearde umsonst. Sogar die Konkurrenz kann ihre Variablennanmen 1:1 nach STATA exportieren. Smiley (zwinkernd)

 

Gruss und Dank

Gairon

Kurt_Bremser
Super User

Frage: ist die "Konkurrenz" auch case-insensitive wie SAS?

Das ist nämlich der bestimmende Faktor. Selbst die Methode mit dem do-file ist "at the risk of the user". Zwei Datasets mit unterschiedlich geschriebenen Variablennamen können da ziemliche Probleme auslösen. Das lässt sich einfach nicht generisch und zuverlässig lösen, aus den Gründen, die ich schon angeführt habe.

Besonders haarig wirds ja, wenn man im STATA variable und Variable hat, und das nach SAS exportieren möchte. Da geht dann ohne Umbenennen gar nix.

Gairon
Fluorite | Level 6

@Kurt_Bremser

Soweit ich weiss ist es bei SPSS der Fall.Wir haben seit Jahren keinerlei Probleme mit dem Export nach STATA.

Es werden alle Variablennamen 1:1 nach STATA übernommen.

 

"Zwei Datasets mit unterschiedlich geschriebenen Variablennamen können da ziemliche Probleme auslösen".

Es geht doch nur darum, einen einzigen SAS Datensatz nach STATA zu exportieren, da können keine gleichgeschriebenen Variablennamen vorkommen.

 

Bei der anderen Variante STATA nach SAS exportieren, haben Sie natürlich recht, da kann es zu Fehlern kommen.

 

Ich glaube wir reden aneinander vorbei. Danke für Ihre Hilfe.

 

Nachtrag:

Wir haben jetzt ein Update von der Version 9403 auf die Version 9406 bekommen, damit werden die Variablennamen nun auch ordentlich 1:1 nach STATA übertragen.

 

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Diskussionsstatistiken
  • 5 Antworten
  • 1430 Aufrufe
  • 0 Kudos
  • 3 in Unterhaltung