Stringvariableninhalt systematisch ändern

Deskriptive Statistiken mit Stata.

Stringvariableninhalt systematisch ändern

Beitragvon Tonttu » Fr 17. Jan 2014, 17:27

Moin

Ich habe einen Datensatz mit einem kleinen Problem: eine Variable enthält zwei Daten, eine Nummer und jeweils einen Namen, Informationen die eigentlich auf zwei Variablen verteilt sein sollten. Auf den Namen kann ich verzichten, versuche also nur die Nummer zu extrahieren, wobei wenn beides möglich wäre hätte ich auch nichts dagegen. Beispiel von den Daten ist: " 283 Quecksilber Konzentrat"
Habe mich mit verschiedensten Methoden mit "replace" versucht und ein bisschen eleganter mit "subinstr" zusammen mit "strpos". Das Problem ist, dass vor den Zahlen eine unterschiedliche Anzahl an Leerzeichen vorhanden ist, heisst feststellen wo Leerzeichen ist und ab dort löschen funktioniert nicht, ebenfalls nicht erste Zeichen zu löschen damit die Zahl tatsächlich am Anfang steht.

Einzige Lösung die mir jetzt noch in den Sinn kommt ist mit "subinstr" alle Buchstaben (sowohl Klein- als Grossgeschrieben), sowie Sonderzeichen (Klammern) einzeln zu löschen. Um das elegant zu lösen habe ich mich mit "foreach" auseinandergesetzt, bin aber auch nicht auf einen grünen Zweig gekommen. Und die Idee alles ausser den Zahlen zu löschen, hat auch nicht geklappt (evtl. habe ich einen Fehler im Befehl?): replace Var = subinstr(Var,!="1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"0","",.)

Gibt es eine Möglichkeit, wie das Ganze einigermassen elegant und vA auch sicher lösen kann (Zeichen einzeln löschen ist schliesslich auch Fehleranfällg)?

Vielen Dank für jede Hilfe!
Tonttu
 
Beiträge: 2
Registriert: Fr 17. Jan 2014, 17:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stringvariableninhalt systematisch ändern

Beitragvon daniel » Fr 17. Jan 2014, 18:32

Ja. Nennen wir Deine Originalvariable "badstrvar". Wie wäre es mit

Code: Alles auswählen
// create clean version of badstr
g clean = trim(itrim(badstrvar))

// now get the number
g number = word(clean, 1)

// get the rest
g rest = substr(clean, strpos(clean, " "), .)


Du könntest alternativ auch mit -split- arbeiten.
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Stringvariableninhalt systematisch ändern

Beitragvon Tonttu » Mo 20. Jan 2014, 14:03

Vielen Dank! Klappt so wunderbar :)
Tonttu
 
Beiträge: 2
Registriert: Fr 17. Jan 2014, 17:14
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Deskriptive Statistik

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

cron