Datenbereinigung

Fragen zu Stata Syntax und Do-Files.

Datenbereinigung

Beitragvon Flachzange » Do 25. Apr 2013, 14:55

Hallo,

ich möchte meinen Datensatz um 0-Renditen bereinigen. Als Variablen habe ich Firmen und Renditen. Pro Unternehmen sollen die 0-Renditen von Beginn bis Ende gelöscht werden. Hier ein Beispiel:
Firm Year Renditen
1 2000 1
1 2001 0
1 2002 0
1 2003 0
2 2000 1
2 2001 2
2 2002 3
2 2003 0
Für das Unternehmen 1 soll ab 2001 bis 2003 und für Unternehmen 2 ab 2003 die 0-Renditen gelöscht werden.
Kommt man da überhaupt mit dem Befehl tsspell weiter?
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon daniel » Do 25. Apr 2013, 22:32

Was heißt "die 0-Renditen löschen"? Die Zeilen, in denen die Rendite 0 ist aus dem Datensatz entfernen, oder die 0er mit missing values ersetzen.

In beiden Fällen ist eine Durchführung "pro Unternehmen" überflüssig.

Code: Alles auswählen
drop if !Renditen


oder

Code: Alles auswählen
replace Renditen = . if !Renditen


erfüllt den Zweck.

Sollte etwas anderes gewünscht sein, reformuliere bitte die Frage.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon Flachzange » Fr 26. Apr 2013, 09:33

Die 0-Renditen am Ende sollen entfernt, also als missing values ersetzt werden. Falls eine 0-Rendite zwischendrin vorkommt soll diese aber nicht ersetzt werden: Bsp:
u1 2001 1
u1 2002 0
u1 2003 1
u1 2004 0
u1 2005 0
u1 2006 0

Ersetzen ab 2004 bis 2006.
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon daniel » Fr 26. Apr 2013, 12:37

Ok.

Code: Alles auswählen
g foo = -Year
bys Frim (foo) : replace Rendite = . if !Rendite & !(sum(Rendite >= 1))
so Firm Year
drop foo
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon Flachzange » Fr 26. Apr 2013, 13:20

Hat leider nicht funktioniert. Stata ersetzt alle 0-Renditen durch missings. Habe schon versucht einen Syntax mit tsspell zu erstellen, das funktioniert aber auch nicht.
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon daniel » Fr 26. Apr 2013, 14:25

Stata ersetzt alle 0-Renditen durch missings.


Nein, definitiv nicht alle! Bei 2002 bleibt die 0, wie von Dir gewünscht, stehen.

Code: Alles auswählen
clear
inp Firm Year Rendite
1 2001 1
1 2002 0
1 2003 1
1 2004 0
1 2005 0
1 2006 0
end
l

g foo = -Year
bys Firm (foo) : replace Rendite = . if !Rendite & !(sum(Rendite >= 1))
so Firm Year
drop foo
l
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon Flachzange » Fr 26. Apr 2013, 14:45

Also ich habs jetzt sogar nochmal mit einen kleineren Beispieldatensatz und selbst da werden alle 0 mit . ersetzt.
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon daniel » Fr 26. Apr 2013, 14:53

Wenn Du meinen zuletzt geposteten code (basierend auf Deinem Beispiel) kopierst und laufen lässt, wirst Du eindeutig sehen, dass die Null im Jahr 2002 stehen bleibt, genau wie von Dir gewünscht.

Ich wäre dankbar, wenn die Behauptung, mein code würde nicht funktionieren und Stata würde alle Nullen erstezen von einem replizierbaren(!) Beipiel begleitet würde.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Datenbereinigung

Beitragvon Flachzange » Fr 26. Apr 2013, 16:10

Hat doch funktioniert, danke :D
Flachzange
 
Beiträge: 12
Registriert: Sa 20. Apr 2013, 16:05
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Stata Syntax

Wer ist online?

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