Khi tôi xuất tập dữ liệu sang định dạng Stata bằng cách sử dụng PROC EXPORT
, SAS 9.4 tự động mở rộng thêm byte thừa (trống) vào mọi quan sát của mọi biến chuỗi. Ví dụ, trong tập dữ liệu này:Làm cách nào để ngăn không cho SAS thêm một byte trống thừa vào mọi biến chuỗi khi tôi sử dụng 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;
các biến cust_id
, category
, và status
nên str1
, str3
, và str1
trong file Stata thức, và do đó mất 1 byte, 3 byte và 1 byte , tương ứng, cho mọi quan sát. Tuy nhiên, SAS tự động thêm một byte trống bổ sung vào mỗi quan sát, mở rộng các loại dữ liệu của chúng thành các loại dữ liệu str2
, str4
và str2
trong tệp Stata được xuất ra.
Điều này cực kỳ có vấn đề vì đó là một byte phụ được thêm vào mỗi quan sát mỗi biến số chuỗi. Đối với các tập dữ liệu lớn (tôi có một số với ~ 530 triệu quan sát và nhiều biến chuỗi), điều này có thể thêm vài gigabyte vào tệp đã xuất. Sau khi tệp được tải vào Stata, lệnh compress
trong Stata có thể tự động xóa các byte trống này và thu nhỏ tệp, nhưng đối với các tập dữ liệu lớn, PROC EXPORT
thêm rất nhiều byte vào tệp mà tôi không luôn có đủ bộ nhớ để tải bộ dữ liệu vào Stata ở nơi đầu tiên.
Có cách nào để ngăn SAS lồng các biến chuỗi vào vị trí đầu tiên không? Khi tôi xuất một tệp với một biến chuỗi ký tự (ví dụ), tôi muốn biến đó được lưu dưới dạng một biến chuỗi ký tự trong tệp đầu ra.
Tôi nghi ngờ SAS đang thêm một trình kết thúc chuỗi, mặc dù tại sao tôi không có đầu mối. – Joe
Nhìn vào tài liệu Stata, nó hỗ trợ terminator chuỗi '\ 0' (cho hoạt động kiểu" Varchar "). Tôi nghi ngờ SAS chỉ đặt sau chuỗi * mỗi *, nếu tôi phải đoán.Tôi khuyên bạn nên đặt một vé hỗ trợ với sự hỗ trợ kỹ thuật của SAS; họ có thể có khả năng a) xác nhận điều này và b) cho bạn biết nếu có cách giải quyết khác. Tôi không nhìn thấy một dựa trên một cái nhìn ngắn gọn. – Joe
Và nếu bạn nhận được phản hồi từ sự hỗ trợ kỹ thuật của SAS - vui lòng thêm câu trả lời với bất kỳ thông tin nào bạn nhận được, vì vậy nó có sẵn cho những người tìm kiếm khác! – Joe