stata - 从具有重叠的长数据集中确定每个时期的独特处方数量

标签 stata

我在 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/

相关文章:

ms-word - 如何在 Word 中为 Stata 中的相关表生成输出?

r - 从版本 14 之前的 Stata 文件将 .dta 文件读入 R 时如何处理编码?

r - 三明治+mlogit : `Error in ef/X : non-conformable arrays` when using `vcovHC()` to compute robust/clustered standard errors

r - 具有异方差校正的标准误差的回归

python - 从 Python : Pipe Stata console output to command line 调用的 Stata 批处理

time-series - Stata:将日期,季度转换为年份

loops - 在Stata中循环运行程序

c++ - 如何从宏中为 Stata 中的变量添加标签

stata - 逗号在ado程序中通过语法varlist传递

graph - Stata 图表中没有水平线且没有图例边框