Mein-Datensatz basiert Löschen besteht aus einer Anzahl von Variablen:Stata: Duplikate zu Terminen
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(v1 v2) str11 Date float(v4 v5 v6 v7 v8)
1 2 "15-aug-2016" 1 1 1 1 1
1 2 "07-may-2015" 1 1 1 1 50
1 2 "07-may-2015" 1 1 1 1 88
1 2 "15-aug-2016" 1 1 1 1 29
end
Die Variable date
ist ein Datum und Zeit und ist als Datums
generate double date = date(Date,"DMY")
Meine formatiert Duplikate sind für v1-v2-v4-v5-v6-v7 (wie im Beispiel) gleich, während v8 anders ist.
Ich muss Duplikate basierend auf v1-v2-v4-v5-v6-v7 löschen und die mit dem kleinsten Datum (hier 07-Mai-2015) behalten.
Ich habe ohne Erfolg versucht:
1.
gsort -date
bysort v1 v2 v4 v5 v6 v7: generate dublet=_n
order dublet date
keep if dublet==1
drop dublet
-> für die ersten 25 Reihen Works oder so, dann ein paar Mal die falsche hält und dann wieder die richtige . (Scheint mir, dass der bysort
Befehl entfernt die Art von gsort
getan Alle wissen, ob das stimmt?)
bysort v1 v2 v4 v5 v6 v7 (date) : keep if _n == _N
-> Offensichtlich hält der falsche, da Date
nicht -Date
ist. jedoch -Date
ist keine Option - Stata schreibt: - invalid name
'bysort' macht Ihre' gsort' in Ihrem Code sicher rückgängig. Anstatt das letzte Datum zu behalten, das Sie behalten können, müssen Sie vor dem Sortieren weder direkt noch indirekt eine Variable negieren. –