数据集说明:
我有一个高度不平衡的面板数据集,一些独特的小组成员ID只出现一次,而其他人出现多达4,900次。每个观察结果反映了与独特产品标识符(UPC)相关的酒精购买。如果我的小组成员在同一天购买了两个独立的品牌(因此,两个不同的UPC),同一商店,则会创建两个不同的观察。然而,看到这些购买是在同一天和同一家商店进行的,我可以放心地认为这只是一次旅行。类似地,另一个小组成员也有2个与同一商店相关的观察但是不同购买天数(反之亦然)假定进行2次商店访问。
任务:
我想探索那些在整个时期内购买酒精一定次数的人的品质。因此,我需要确定只进行1次访问,2次访问,3次访问5次,访问访问次数为50次,访问次数为50次等的小组成员。
我首先尝试通过按小组成员ID,日期和商店标记他们来识别只进行过一次访问的小组成员。但是,该程序还标记出现两次或更多次的人的第一次出现。
egen tag = tag(panid day store)
我也试过collapse
,但意识到这可能不是最好的解决方案,因为我想保留我的观察结果"按照"没有聚合任何变量。
如果您能为我提供有关如何识别此类观察结果的见解,我将不胜感激。
更新:
panid units dollars iri_key upc day tag
1100560 1 5.989 234140 00-01-18200-00834 47 1
1101253 1 13.99 652159 00-03-71990-09516 251 1
1100685 1 20.99 652159 00-01-18200-53030 18 1
1100685 1 15.99 652159 00-01-83783-37512 18 0
1101162 1 19.99 652159 00-01-34100-15341 206 1
1101162 1 19.99 652159 00-01-34100-15341 235 1
1101758 1 12.99 652159 00-01-18200-43381 30 1
1101758 1 6.989 652159 00-01-18200-16992 114 1
1101758 1 11.99 652159 00-02-72311-23012 121 1
1101758 2 21.98 652159 00-02-72311-23012 128 1
1101758 1 19.99 652159 00-01-18200-96550 223 1
1101758 1 12.99 234140 00-04-87692-29103 247 1
1101758 1 20.99 234140 00-01-18200-96550 296 1
1101758 1 12.99 234140 00-01-87692-11103 296 0
1101758 1 12.99 652159 00-01-87692-11103 317 1
1101758 1 19.99 652159 00-01-18200-96550 324 1
1101758 1 12.99 652159 00-02-87692-68103 352 1
1101758 1 12.99 652159 00-01-87692-32012 354 1
嗨罗伯托,感谢您的反馈。这是数据集的一小部分样本。 在该特定示例的第一部分中,我们可以安全地假设所有三个id 1100560,1101253和1100685仅访问商店一次,即每个仅进行一次交易。前两个小组成员显然每个只有一个记录,第三个小组成员在同一天,即同一交易中,在同一商店购买了2个不同的UPC。
该示例的第二部分有两个小组成员 - 1101162和1101758--他们分别进行了多次交易:两次和十一次。 (小组成员1101758有12次观察,但只有11次不同的旅行。)
我想确定我的数据集的确切数量的不同旅行(或交易)小组成员:
panid units dollars iri_key upc day tag total#oftrips
1100560 1 5.989 234140 00-01-18200-00834 47 1 1
1101253 1 13.99 652159 00-03-71990-09516 251 1 1
1100685 1 20.99 652159 00-01-18200-53030 18 1 1
1100685 1 15.99 652159 00-01-83783-37512 18 0 1
1101162 1 19.99 652159 00-01-34100-15341 206 1 2
1101162 1 19.99 652159 00-01-34100-15341 235 1 2
1101758 1 12.99 652159 00-01-18200-43381 30 1 11
1101758 1 6.989 652159 00-01-18200-16992 114 1 11
1101758 1 11.99 652159 00-02-72311-23012 121 1 11
1101758 2 21.98 652159 00-02-72311-23012 128 1 11
1101758 1 19.99 652159 00-01-18200-96550 223 1 11
1101758 1 12.99 234140 00-04-87692-29103 247 1 11
1101758 1 20.99 234140 00-01-18200-96550 296 1 11
1101758 1 12.99 234140 00-01-87692-11103 296 0 11
1101758 1 12.99 652159 00-01-87692-11103 317 1 11
1101758 1 19.99 652159 00-01-18200-96550 324 1 11
1101758 1 12.99 652159 00-02-87692-68103 352 1 11
1101758 1 12.99 652159 00-01-87692-32012 354 1 11
我认为,底线是 - 只要panelist
,iri_key
和day
相同,这就算作1次旅行。每个小组成员的总出行次数取决于额外数量的不同panelist
,iri_key
和day
组合。
答案 0 :(得分:2)
我不确定我到底知道你想要什么,但我的猜测是:
clear all
set more off
*----- example data -----
input ///
id code day store
1 1 86 1
1 1 45 1
1 3 45 1
1 3 4 4
2 1 86 1
2 1 45 1
2 3 45 1
end
format day %td
list, sepby(id)
*----- what you want? -----
egen tag = tag(id day store)
bysort id: egen totvis = total(tag)
bysort id store: egen totvis2 = total(tag)
list, sepby(id)
将导致:
+--------------------------------------------------------+
| id code day store tag totvis totvis2 |
|--------------------------------------------------------|
1. | 1 3 05jan1960 4 1 3 1 |
2. | 1 1 15feb1960 1 1 3 2 |
3. | 1 3 15feb1960 1 0 3 2 |
4. | 1 1 27mar1960 1 1 3 2 |
|--------------------------------------------------------|
5. | 2 1 15feb1960 1 1 2 2 |
6. | 2 3 15feb1960 1 0 2 2 |
7. | 2 1 27mar1960 1 1 2 2 |
+--------------------------------------------------------+
这意味着1人总共进行了3次访问(考虑所有商店),其中1次存储4次,2次存储1次.2次访问2次,均存储1次。