2017-08-04 12 views
1

Dies könnte eine dumme Frage sein, aber ich habe eine harte Zeit mit diesem Problem. Ich habe Daten so etwas wiesas Teilmenge Daten nach Gruppe

animal firstcharacter 
mouse m 
dog d 
cat c 
monkey m 
donkey d 

Ich möchte diese „Original“ Daten in mehrere Datensätze auf Basis first teilen.

In diesem Beispiel sollte ich 3 Gruppen haben (c, d, m).

Dies ist einfach, wenn ich dies tun, indem man:

data new_c; set original; if firstcharacter = "c" then; run; 
data new_d; set original; if firstcharacter = "d" then; run; 
data new_m; set original; if firstcharacter = "m" then; run; 

Das Problem ist, ich habe Hunderte von diesen Gruppen in den tatsächlichen Daten. Gibt es einen einfachen Weg (mit do-Schleife oder Makro-Variable), um dies zu tun?

Danke.

+0

Es gibt andere ungefähr ähnliche Fragen; Ich schließe nicht-wie-dupliziere nur, weil keiner von ihnen wirklich ideale Antworten hat. Suchen Sie nach "Split SAS Dataset", um mehrere zu sehen, zum Beispiel [this one] (https://stackoverflow.com/questions/14955465/split-sas-dataset). – Joe

Antwort

0

Dies ist ziemlich einfach mit Hashtabellen zu tun. Dies ist die 'einfache' Version, die eine Sortierung erfordert, aber keinen Hash der Hashes oder irgendeine echte Verwaltung erfordert.

Komplexere Methoden existieren mit einem Hash von Hashes (Suche auf, wenn Sie mehr wissen wollen).

+0

Vielen Dank! Ich weiß nichts über "Hash" Zeug, aber Ihre Logik macht Sinn! –

+0

Sie können natürlich darüber lesen. Sie können auch den Link lesen, den ich gepostet habe, um andere Möglichkeiten (Makros) zu sehen. Dies ist das effizienteste_. – Joe