2012-08-27 30 views
11

Tôi đang cố ghép nối nhiều tập dữ liệu trong SAS và tôi đang tìm cách lưu trữ thông tin về tên tập dữ liệu riêng lẻ trong tập dữ liệu được xếp chồng cuối cùng.SAS: ghép các tập dữ liệu khác nhau trong khi vẫn giữ các tên bảng dữ liệu riêng lẻ

Ví dụ: tập dữ liệu ban đầu là "my_data_1", "abc" và "xyz", mỗi tập hợp có cột 'var_1' và 'var_2'.

Tôi muốn kết thúc với tập dữ liệu "cuối cùng" với các cột 'var_1', 'var_2' và 'var_3'. trong đó 'var_3' chứa các giá trị "my_data_1", "abc" hoặc "xyz" tùy thuộc vào tập dữ liệu mà một hàng cụ thể đến.

(Tôi có một giải pháp cludgy để làm điều này, nghĩa là thêm tên bảng làm biến phụ trong tất cả các tập dữ liệu riêng lẻ. Nhưng tôi có khoảng 100 bảng được xếp chồng lên nhau và tôi đang tìm cách hiệu quả để thực hiện việc này.)

Trả lời

8

Sử dụng các tuyên bố in khi bạn thiết lập mỗi tập dữ liệu:

data final; 
set my_data_1(in=a) abc(in=b) xyc(in=c); 
if a then var_3='my_data_1'; 
if b then var_3='abc'; 
if c then var_3='xyz'; 
run; 
30

Nếu bạn có SAS 9.2 hoặc mới hơn, bạn có tùy chọn INDSNAME http://support.sas.com/kb/34/513.html

Vì vậy:

data final; 
format dsname datasetname $20.; *something equal to or longer than the longest dataset name including the library and dot; 
set my_data_1 abc xyc indsname=dsname; 
datasetname=dsname; 
run; 
+0

Wow - điều này thật tuyệt, tôi không biết họ đã thêm tùy chọn đó! Tôi sẽ sử dụng nó mọi lúc ... –

+0

Tùy chọn tuyệt vời, tuyệt vời +1 – mAndroid

Các vấn đề liên quan