我的数据集包含许多变量:
* 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
完成的排序?知道这是不正确的吗?)
bysort v1 v2 v4 v5 v6 v7 (date) : keep if _n == _N
- >显然是错误的,因为Date
不是-Date
。
但是,-Date
不是一个选项 - Stata写道:- invalid name
答案 0 :(得分:2)
您可以将第二个答案更改为bysort v1 v2 v4 v5 v6 v7 (date) : keep if _n == 1
,这应该会为您提供您正在寻找的内容。
由于您的数据示例中存在重复日期(2个观察结果为2015年5月7日),因此您将获得具有最短日期的随机观察结果。