我在 Stata 中有一个数据集,如下所示。我想计算每个人每个时期服用的独特处方数。开始时间和结束时间均包含在内(即处方将被视为在这两个时间段内服用):
| Person | Prescription | Start period | End period |
|--------|--------------|--------------|------------|
| 1 | A | 1 | 2 |
| 1 | A | 2 | 3 |
| 1 | A | 3 | 4 |
| 1 | B | 2 | 3 |
| 1 | B | 4 | 5 |
| 1 | C | 2 | 4 |
| 1 | C | 5 | 6 |
| 2 | A | 2 | 3 |
| 2 | A | 3 | 4 |
| 2 | B | 1 | 2 |
| 2 | B | 2 | 3 |
| 2 | C | 2 | 3 |
| 2 | C | 3 | 4 |
| 2 | C | 5 | 6 |
这就是本例中最终数据集的样子:
| Person | Period | Unique Prescriptions |
|--------|--------|----------------------|
| 1 | 1 | 1 |
| 1 | 2 | 3 |
| 1 | 3 | 3 |
| 1 | 4 | 3 |
| 1 | 5 | 2 |
| 1 | 6 | 1 |
| 2 | 1 | 1 |
| 2 | 2 | 3 |
| 2 | 3 | 3 |
| 2 | 4 | 2 |
| 2 | 5 | 1 |
| 2 | 6 | 1 |
另外需要注意的是,处方在某个期间内不应重复计算(例如,处方 A 在第 2 阶段中对于第 1 个人只应计算一次,即使存在重叠)。
最佳答案
有关如何提供 Stata 数据示例的建议,请参阅标签 wiki。您的示例很清楚,但需要进行一些修改才能用作 Stata 代码。
参见this paper有人认为,当问题是计算不同值时,应避免使用唯一一词。
另请参阅this paper关于如何处理配对日期。
* Example generated by -dataex-. For more info, type help dataex
clear
input byte Person str1 Prescription byte(Start_Period End_Period)
1 "A" 1 2
1 "A" 2 3
1 "A" 3 4
1 "B" 2 3
1 "B" 4 5
1 "C" 2 4
1 "C" 5 6
2 "A" 2 3
2 "A" 3 4
2 "B" 1 2
2 "B" 2 3
2 "C" 2 3
2 "C" 3 4
2 "C" 5 6
end
gen long obsno = _n
expand End_Period - Start_Period + 1
bysort obsno : gen Period = Start_Period + _n - 1
drop Start_Period End_Period obsno
duplicates drop
sort Person Period
contract Person Period, freq(Distinct)
list, sepby(Person)
+----------------------------+
| Person Period Distinct |
|----------------------------|
1. | 1 1 1 |
2. | 1 2 3 |
3. | 1 3 3 |
4. | 1 4 3 |
5. | 1 5 2 |
6. | 1 6 1 |
|----------------------------|
7. | 2 1 1 |
8. | 2 2 3 |
9. | 2 3 3 |
10. | 2 4 2 |
11. | 2 5 1 |
12. | 2 6 1 |
+----------------------------+
关于stata - 从具有重叠的长数据集中确定每个时期的独特处方数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77688222/