我正在处理一个数据集,该数据集在2800个人的多个日期上按日期购买(称为ItemNum)。每个项目都有自己的行,因此如果某个人在某个日期购买了两个项目,那么该日期将出现两次。我不关心在一个日期购买了多少项目(每个日期代表一次旅行),而是2800个人的平均旅行次数(大约18230行数据)。我的数据如下:
+---+----------+-------+---------------------- ---+
|ID | Date |ItemNum| ItemDescript |
| 1 |01/22/2010| 1 |Description of the item |
| 1 |01/22/2010| 2 |Description of other item |
| 1 |07/19/2013| 1 | |
| 2 |06/04/2012| 1 | |
| 2 |02/02/2013| 1 | |
| 2 |11/13/2013| 1 | |
+---+----------+-------+---------------------- ---+
在上表中,第1人进行了两次旅行和三次购买(因为显示了两个日期),第二次进行了三次旅行。我对所有人的平均出行次数感兴趣,但首先我需要将其折叠到独特的日期。所以我知道我需要collapse
日期,但是当我做
collapse (mean) ItemNum (first) Date, by(ID)
它只显示ID显示的第一个日期,而不是每个唯一日期的第一个日期。
下一个问题是,一旦它崩溃了,我需要采用日期计数的平均值,而不是日期本身,这也是我似乎被绊倒的地方。
答案 0 :(得分:1)
collapse (mean) ItemNum, by(ID Date) fast
答案 1 :(得分:1)
或许类似
clear
input ID str16 dt ItemNum
1 "01/22/2010" 1
1 "01/22/2010" 2
1 "07/19/2013" 1
end
generate Date = daily(dt,"MDY")
egen trip = tag(ID Date)
collapse (sum) trip, by(ID)
summarize trip
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
trip | 1 2 . 2 2
如果你正在寻找的是“平均值” - 一个数字给出了2800个人的平均旅行次数(1个人给出了有限的样本数据)。