Anzeigen wenn ein Wert mehrfach auftaucht

Fragen zu Stata Syntax und Do-Files.

Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon Minna » Do 15. Nov 2012, 19:45

Hallo zusammen,

ich habe mal eine Frage und finde leider im Internet keine Lösung obwohl es wahrscheinlich ein ganz einfacher Befehl ist.

Ich habe einen Datensatz mit einer Variable (string) drin. In der Spalte tauchen Namen auf, der eine Name mal nur ein Mal, ein anderer vielleicht viermal. Ich möchte nun eine Variable erzeugen, die den Wert 1 annimmt, wenn der Name in den vorangegangenen Zeilen noch nie aufgetaucht ist. Sprich in dem Moment wo er das zweite Mal (oder noch öfter) auftaucht, soll die Dummyvariable auf den Wert 0 gehen.

Ich hoffe mir kann jemand helfen - ich würde mich sehr freuen!
Minna
 
Beiträge: 12
Registriert: Do 15. Nov 2012, 19:35
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon daniel » Do 15. Nov 2012, 21:07

Code: Alles auswählen
bys <varname> : g byte <foo> = ( _n == 1) if !mi(varname)


Dabei ist <varname> der Name Deiner string Variablen <foo> der Name des dummies.

Für systematische Ansätze, verwandt mit diesem Thema siehe ebenfalls

Code: Alles auswählen
help duplicates
help isid
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: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon Minna » Fr 16. Nov 2012, 09:28

Hallo Daniel,

erstmal danke für die schnelle Rückmeldung aber leider klappt das so nicht :( Ich hab jetzt sogar eine Spalte drin, mit Zahlenangaben, aber ich komm leider irgendwie nicht weiter. Die Tabelle sieht in etwa so aus:

Namenscode1 Aktiv Namenscode2 Aktiv
1 1 6 0
2 1 7 1
3 0 8 1
1 1 6 1
7 0 9 1
5 1 10 0
1 1 7 1
2 0 6 0

Nun soll eine 5 Spalte erzeugt werden (nennen wir sie "einmalig") immer dann, wenn weder der Namenscode1 noch der Namenscode2 einer der vorangegangenen Spalten aufgetaucht ist. Unabhängig davon, ob der Namenscode in der 1 oder in der 3 Spalte stand.

Die ersten 3 Zeilen sollen also in "einmalig" eine 1 haben und die 4 und 5 Spalte eine Null weil entweder der 1er oder der 7er bereits in den vorherigen Spalten drin war usw. :?

Ich hoffe ich hab mich nicht alzu verwirrt ausgedrückt :oops:
Minna
 
Beiträge: 12
Registriert: Do 15. Nov 2012, 19:35
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon daniel » Fr 16. Nov 2012, 11:02

aber leider klappt das so nicht


Wenn Du nach der Lösung eines Problems fragst, eigentlich aber ein ganz anderes Problem hast, sollte es Dich nicht verwundern, dass die Lösung nicht auf Dein Problem passt. Ich kann ja nun schlecht hellsehen.

Deine aktuelle Beschriebung ist leider wenig hilfreich. Es scheint jetzt um den Vergleich von Spalten (sagen wir doch von nun an: Variablen) anstelle des Vergleichs von Zeilen (sagen wir von nun an: Fälle oder Beobachtungen) zu gehen. Da die beiden allerdings wild durcheinander gewürfelt werden

Die ersten 3 Zeilen sollen also in "einmalig" eine 1 haben und die 4 und 5 Spalte eine Null


weiß ich nicht, auf was Du hinaus willst.

Könntest Du, ähnlich, wie Du es bereits getan hast, einen Datensatz skizzieren (im Optimalfall mittels -input- Befehl, sodass ich das nur copypasten muss)? In dieser Skizze lass bitte alle unnötigen Angaben (bsp. die Variablen <Aktiv> -- abgesehen davon, dass dieser Variablenname zweimal vorkommt, was nicht sein kann) weg, und füge stattdessen besser die neu zu bildende Variable <einmalig> hinzu. Im Fließtext kannst Du dann ergänzed erläutern, wesshalb diese Variable für welche Fälle welchen Wert annimmt.

Allgemein scheint mir Dein Vorhaben, soweit ich es verstehe, etwas "wackelig", weil das Ergebnis von der aktuellen Sortierung des Datensatzen abzuhängen scheint. Sollte das der Fall sein, wirst Du früher oder später (eher früher als später) Probleme bekommen, und solltest nochmal über das ultimative Ziel Deiner Datenaufbereitung nachdenken.
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: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon Minna » Fr 16. Nov 2012, 14:59

Sorry wenn ich mich da mißverständlich ausgedrückt habe :oops: Anbei nun ein solcher Satz.

Bsp. in der ersten Reihe... da sollen beide (first_time1 und first_time2) einen 1er bekommen... beide Personen sind vorher noch nicht im Datensatz aufgetaucht (das gleiche bei der zweiten Reihe).

Dritte Reihe ist nun aber die Person 1167 das zweite Mal bereits drin... soll also einen 0er bekommen... hingegen die andere Person 828 einen 1er weil sie noch nicht erwähnt wurde usw. Der Namenscode ist eindeutig, aber er kann mal in der Spalte name_code1 und mal in der Spalte name_code2 auftauchen.

Würd mich sehr freuen wenn du mir helfen könntest!
Dateianhänge
Tabelle.xls
Tabelle (so sollte es nachher aussehen)
(24.5 KiB) 288-mal heruntergeladen
Minna
 
Beiträge: 12
Registriert: Do 15. Nov 2012, 19:35
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon daniel » Fr 16. Nov 2012, 15:35

Sich missverständlich Ausdrücken, und selbst nicht so genau zu wissen, was man eigentlich will, sind zwei verschiedene paar Schuhe. Nun willst Du plötzlich zwei Variablen -- davon war zuvor noch nie die Rede. Ich will nicht Dich nicht nerven, aber mir scheint, jeder Aufwand den ich (oder sonst wer) in die Lösungssuche steckt, ist Zeitverschwendung, da Du bei jedem post neue Informationen enthülst, bzw. Deine Entscheidungen und Wünsche änderst.

Versteh mich nicht falsch, ich möchte Dir schon helfen, sonst wären diese Zeilen schon pure Zeitverschwendung, aber bevor ich mir jetzt Gedanken mache, könntest Du nicht vielleicht ein zwei Worte zu den Daten und Deinem Ziel/Deinen Zielen sagen?

Stehen z.B. die Personen(nummern) eines Falls in einem bestimmten Verhältnis? Will fragen, ist es zufällig, dass im ersten Fall die Personennummern 1167 und 260 kombiniert stehen? Im einzelen wäre zu klären: welche Bedeutung hat es, dass gerade diese beiden Personen nebeneinander in einem Fall stehen? Welche Bedeutung hat es, dass diese Kombination genau der erste Fall des Datensatzes ist? Welche Bedeutug hat die Position eines Falls im Datensatz?

Wenn Du eine der drei letzten Fragen mit: "Keine Bedeutung" beantwortest, dann erübrigt es sich (vorläufig) über die Erstellung der neuen Variablen nachzudenken, weil deren Inhalt von der (zufälligen) Sortierung der Fälle und/oder Kombinationen von Personennummern abzuhängen scheint.

Des Weiteren wäre es für alternative Lösungsvorschläge sinnvoll, Deine weiteren Ziele zu kennen. Was soll denn mit den neuen Variabeln passierenm, wenn sie erstellt sind?
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: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon Minna » Fr 16. Nov 2012, 16:56

Die zwei Varialen waren eher als "Zwischenschritt" gedacht. Im Endeffekt sind für eine IV-Schätzung nur jene Fälle relevant, die wo einem Namenscode ein 1er und einem ein 0er zuzuweisen ist - der Rest wird durch -drop aus dem Datensatz verschwinden. Wenns direkt in einer Variablen angezeigt werden kann, dann umso besser. Es geht halt um die Erfogsmessung wenn eine Person im Team ist die bereits etwas Erfahrung hat und eine die noch ganz neu dabei ist.

Die Reihenfolge ist zeitlich abhängig... es wird nie eine andere Aufreihung der Personen geben als so wie sie jetzt in der Tabelle sind! Welche Personen dort nebeneinander stehen hat halt auch etwas damit zu tun, welche zwei Personen zu welchem Zeitpunkt zusammengearbeitet haben. also weder an der Kombination der beiden Variablen noch an deren Reihenfolge würde sich etwas ändern. Im Original sind es halt einfach ein paar tausend Zeilen mehr und in natürlich auch mehr Personen aber immer nur die beiden Spalten.
Minna
 
Beiträge: 12
Registriert: Do 15. Nov 2012, 19:35
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon daniel » Fr 16. Nov 2012, 17:42

Code: Alles auswählen
g t = _n
reshape long name_code ,i(t)
bys name_code (t) : g byte first_time = (_n == 1) if !mi(name_code)
reshape wide name_code first_time ,i(t) j(_j)


Siehe

Code: Alles auswählen
h reshape


um das an Deine "original" Variablenamen anzupassen.
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: Anzeigen wenn ein Wert mehrfach auftaucht

Beitragvon Minna » Sa 17. Nov 2012, 07:02

TAUSEND DANK!!!! Das funktioniert perfekt...also wirklich... vielen lieben Dank (auch für deine Geduld!)
Minna
 
Beiträge: 12
Registriert: Do 15. Nov 2012, 19:35
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Stata Syntax

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 3 Gäste