Kiedy eksportuję zestaw danych do formatu Stata przy użyciu PROC EXPORT
, automatycznie rozszerza się SAS 9.4, dodając dodatkowy (pusty) bajt do każdej obserwacji każdej zmiennej łańcuchowej. Na przykład w zestawie danych:Jak zatrzymać SAS dodawanie dodatkowego pustego bajtu do każdej zmiennej łańcuchowej, gdy używam PROC EXPORT?
data test1;
input cust_id $ 1
month 3-8
category $ 10-12
status $ 14-14
;
datalines;
A 200003 ABC C
A 200004 DEF C
A 200006 XYZ 3
B 199910 ASD X
B 199912 ASD C
;
quit;
proc export data = test1
file = "test1.dta"
dbms = stata replace;
quit;
Zmienne cust_id
, category
i status
należy str1
, str3
i str1
w końcowym pliku Stata, a tym samym zajmują 1 bajt, 3 bajty i 1 bajt , odpowiednio, dla każdej obserwacji. Jednak SAS automatycznie dodaje dodatkowy pusty bajt do każdej obserwacji, która rozszerza typy danych na typy danych str2
, str4
i str2
w wyjściowym pliku Stata.
Jest to bardzo problematyczne, ponieważ to dodatkowy bajt dodany do każdy obserwacja każda zmienna ciąg. W przypadku dużych zestawów danych (mam kilka z ~ 530 milionami obserwacji i licznymi zmiennymi łańcuchowymi), można dodać kilka gigabajtów do eksportowanego pliku.
Gdy plik zostanie załadowany do Stata, komenda w Stata compress
może automatycznie usunąć te puste bajty i kurczyć pliku, ale w przypadku dużych zbiorów danych, PROC EXPORT
dodaje tak wiele dodatkowych bajtów do pliku, że nie zawsze mają wystarczająco pamięć do załadowania zbioru danych do Stata.
Czy istnieje sposób, aby zatrzymać SAS przed wypełnianiem zmiennych łańcuchowych w pierwszej kolejności? Kiedy eksportuję plik ze zmienną łańcuchową o jednym znaku (na przykład), chcę, aby ta zmienna była przechowywana jako zmienna łańcuchowa o jednym znaku w pliku wynikowym.
Podejrzewam, że SAS dodaje terminator ciągów znaków, ale dlaczego nie mam pojęcia. – Joe
Patrząc na dokumentację Staty, obsługuje terminator ciągu '\ 0' (dla operacji typu" Varchar "). Podejrzewam, że SAS po prostu kładzie to po * każdym * łańcuchu, jeśli muszę zgadywać.Zaleciłbym umieszczenie biletu pomocniczego przy wsparciu technicznym SAS; mogą one prawdopodobnie a) potwierdzić to i b) poinformować, czy istnieje obejście. Nie widzę jednego na podstawie krótkiego spojrzenia. – Joe
A jeśli usłyszysz od SAS wsparcie techniczne - proszę dodać odpowiedź, niezależnie od otrzymywanych informacji, aby była dostępna dla innych użytkowników! – Joe