2012-08-27 15 views
11

Próbuję połączyć wiele zestawów danych w SAS i szukam sposobu na przechowywanie informacji o poszczególnych nazwach zestawów danych w ostatecznym zestawie danych.SAS: łączenie różnych zestawów danych przy zachowaniu indywidualnych nazw tabel danych

Na przykład. Początkowe zestawy danych to "my_data_1", "abc" i "xyz", każdy z kolumnami "var_1" i "var_2".

Chcę skończyć z "ostatecznym" zestawem danych z kolumnami "var_1", "var_2" i "var_3". gdzie "var_3" zawiera wartości "my_data_1", "abc" lub "xyz" w zależności od tego, z którego zestawu danych pochodził dany wiersz.

(Mam do tego celu rozwiązanie, np. Dodając nazwę tabeli jako dodatkową zmienną we wszystkich indywidualnych zestawach danych, ale mam około 100 tabel do ułożenia w stos i szukam skutecznego sposobu, aby to zrobić.)

Odpowiedz

8

Użyj oświadczenie in po ustawieniu każdego zestawu danych:

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

Jeśli masz SAS 9.2 lub nowsza masz możliwość INDSNAME http://support.sas.com/kb/34/513.html

Więc:

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 - to świetnie, nie wiedziałem, że dodali tę opcję! Będę z tego cały czas korzystać ... –

+0

Fajna, świetna opcja +1 – mAndroid

Powiązane problemy