Stata: удаление неуникальных дубликатов - PullRequest
1 голос
/ 16 апреля 2020

Я хочу сохранить копию каждого наблюдения за год компании, учитывая мою переменную subyear_total в моих данных.

Некоторые из моих данных содержат несколько записей для любого данного года, как отмечено копиями.

Копии были созданы:

bysort cik year: gen copies = _N

Как удалить дубликаты, но сохранить одну копию уникального наблюдения?

* Example generated by -dataex-. To install: ssc install dataex
clear
input int year long cik float(subyear_total copies)
1999 1750   425000  1
2005 1750  4232000  1
2006 1750 1.60e+07  1
2007 1750   182444  3
2007 1750   182444  3
2007 1750   182444  3
2008 1750   710909  3
2008 1750   710909  3
2008 1750   710909  3
2009 1750  5155390  5
2009 1750  5155390  5
2009 1750  5155390  5
2009 1750  5155390  5
2009 1750  5155390  5
end

Так, например:

2007 имеет 3 записи, и я хочу оставить одну из них и отбросить остальные. То же самое для 2008 и 2009 (в котором есть 5 записей).

Я, если сделаю drop if copies > 1, потерял бы я все экземпляры тех лет? Как мне сохранить хотя бы одну?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2020

Здесь можно использовать duplicates, но в вашем случае

bysort year cik : keep if _n == 1 

доставит вас туда напрямую. Переменная copies тогда бесполезна.

1 голос
/ 16 апреля 2020

Вы хотите использовать _n вместо _N в своем коде для назначения групповых идентификаторов, например:

bysort cik year: gen copies = _n

Затем отбросить наблюдения с copies большим:

drop if copies > 1
...