2016-05-04 9 views
0

Ich habe einen Datensatz mit Vorname, zweiter Vorname und Nachname. Ich werde es mit einem anderen Datensatz zusammenführen, der auf die gleichen Variablen passt. In einem Datensatz die Variable mi wie folgt aussieht:Wie wird der gesamte Inhalt eines Strings außer dem ersten Zeichen entfernt?

Lowell 
Ann 
Carl 
A 
Fran 
Allen 

Und ich will es so aussehen:

L 
A 
C 
A 
F 
A 

ich dieses versucht:

gen mi2 = substr(mi, 2, length(mi)) 

aber dies macht das Gegenteil von was ich will, aber es ist das nächste, was ich tun konnte. Ich weiß, das ist wahrscheinlich ein wirklich leichtes Problem, aber ich bin im Moment ratlos.

+1

Bei einer anderen Anmerkung wird das Reduzieren auf ein Zeichen die Zusammenführung erschweren. Ein eigenes Beispiel zeigt, dass "A" jetzt sehr vieldeutig ist. –

+0

@NickCox Ich glaube, ich habe vergessen hinzuzufügen, dass ich auch am Geburtsdatum fusioniere. Die Daten sind beim Vornamen, Zweitnamen, Nachnamen, Dob-Level eindeutig. Im Idealfall würde ich eine eindeutige ID haben, aber Daten kommen nicht immer so, wie Sie es wollen :). – otteheng

Antwort

3

Sie sind auf dem richtigen Weg mit substr. Siehe nachstehendes Beispiel:

clear 

input str10 mi 
Lowell 
Ann 
Carl 
A 
Fran 
Allen 
end 

gen mi2 = substr(mi,1,1) 
list, sep(0) 

    +--------------+ 
    |  mi mi2 | 
    |--------------| 
    1. | Lowell  L | 
    2. | Ann  A | 
    3. | Carl  C | 
    4. |  A  A | 
    5. | Fran  F | 
    6. | Allen  A | 
    +--------------+ 

Die zweite und dritte Argument zur substr sind die Ausgangsposition und die Anzahl der Zeichen sind. In diesem Fall möchtest du beim ersten Zeichen beginnen und ein Zeichen nehmen, also brauchst du substr(mi, 1, 1).

+0

Natürlich! Die Hilfedatei zu 'substr 'verwirrt mich immer. Danke für die Klarstellung. – otteheng

+1

Beachten Sie, dass "gen str1 mi1 = mi" eine Brute-Force-Alternative ist. Sie bestehen auf 'str1' als Speichertyp, so dass nur Platz für ein Zeichen besteht. –

+0

Das ist wahr, und ebenso gültig, aber ich kann nicht anders, als zu denken, dass sich das wie eine grobe Methode anfühlt. – ander2ed