Stata:根据日期删除重复项

时间:2017-04-19 13:01:22

标签: sorting duplicates stata

我的数据集包含许多变量:

* 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

变量date是日期和时间,格式为日期时间

generate double date = date(Date,"DMY")

我的副本与v1-v2-v4-v5-v6-v7相同(如示例所示),而v8则不同。

我需要删除基于v1-v2-v4-v5-v6-v7的重复项,并保留一个日期最小的重复项(此处为07-may-2015)。

我尝试过没有成功:

1

gsort -date
bysort v1 v2 v4 v5 v6 v7: generate dublet=_n
order dublet date
keep if dublet==1
drop dublet

- >适用于前25行左右,然后保持错误的一次,然后再次正确。 (在我看来,bysort命令删除了由gsort完成的排序?知道这是不正确的吗?)

  1. bysort v1 v2 v4 v5 v6 v7 (date) : keep if _n == _N

  2. - >显然是错误的,因为Date不是-Date。 但是,-Date不是一个选项 - Stata写道:- invalid name

1 个答案:

答案 0 :(得分:2)

您可以将第二个答案更改为bysort v1 v2 v4 v5 v6 v7 (date) : keep if _n == 1,这应该会为您提供您正在寻找的内容。

由于您的数据示例中存在重复日期(2个观察结果为2015年5月7日),因此您将获得具有最短日期的随机观察结果。