Stata 随机选择观察结果

Stata 随机选择观察结果,stata,Stata,我有以下格式的数据: Month Date Time1 Time2 Time3 Jan 01/01/2018 1234 2345 3456 Jan 02/01/2018 1234 2346 3457 Jan 03/02/2018 1234 2346 3145 Feb 03/02/2018 1234 2347 3458 Feb 04/02/2018 1235

我有以下格式的数据:

Month       Date        Time1 Time2 Time3
  Jan      01/01/2018   1234  2345   3456
  Jan      02/01/2018   1234  2346   3457
  Jan      03/02/2018   1234  2346   3145
  Feb      03/02/2018   1234  2347   3458
  Feb      04/02/2018   1235  2398   3456
March      04/03/2018   1235  2347   3456
March      01/03/2018   1236  2345   3456
March      02/03/2018   1234  2567   3897
  Feb      02/02/2018   1236  2346   3478
我想随机选择观察结果,这样我就可以从每个月和时间段中获得两个样本日期和数字。例如,对于
Jan
Time 1
我想得到:
01/01/2018
1234
02/01/2018
1234


如何在Stata中执行此操作?

您可以随机选择观察结果,如下所示:

clear

input str5 Month str10 Date Time1 Time2 Time3
Jan      "01/01/2018"   1234  2345   3456
Jan      "02/01/2018"   1234  2346   3457
Jan      "03/02/2018"   1234  2346   3145
Feb      "03/02/2018"   1234  2347   3458
Feb      "04/02/2018"   1235  2398   3456
March    "04/03/2018"   1235  2347   3456
March    "01/03/2018"   1236  2345   3456
March    "02/03/2018"   1234  2567   3897
Feb      "02/02/2018"   1236  2346   3478
end

bysort Month (Time1): generate random = runiform()
bysort Month (Time1 random): keep if _n < 3

list, sepby(Month)

     +-------------------------------------------------------+
     | Month         Date   Time1   Time2   Time3     random |
     |-------------------------------------------------------|
  1. |   Feb   03/02/2018    1234    2347    3458   .3576297 |
  2. |   Feb   04/02/2018    1235    2398    3456   .4004426 |
     |-------------------------------------------------------|
  3. |   Jan   02/01/2018    1234    2346    3457   .2076905 |
  4. |   Jan   01/01/2018    1234    2345    3456   .5597356 |
     |-------------------------------------------------------|
  5. | March   02/03/2018    1234    2567    3897   .0286627 |
  6. | March   04/03/2018    1235    2347    3456   .6889245 |
     +-------------------------------------------------------+
清除
输入str5个月str10日期时间1时间2时间3
2018年1月1日1234 2345 3456
2018年1月2日1234 2346 3457
2018年2月3日1234 2346 3145
2018年2月3日1234 2347 3458
2018年2月4日1235 2398 3456
2018年3月4日1235 2347 3456
2018年3月1日1236 2345 3456
2018年3月2日1234 2567 3877
2018年2月2日1236 2346 3478
结束
按排序月份(时间1):生成random=runiform()
按排序月份(时间1随机):如果小于3,则保留
列表,九月(月)
+-------------------------------------------------------+
|月份日期时间1时间2时间3随机|
|-------------------------------------------------------|
1. |   2018年2月3日1234 2347 3458.3576297|
2. |   2018年2月4日1235 2398 3456.4004426|
|-------------------------------------------------------|
3. |   2018年1月2日1234 2346 3457.2076905|
4. |   2018年1月1日1234 2345 3456.5597356|
|-------------------------------------------------------|
5. | 2018年3月2日1234 2567 3877.0286627|
6. | 2018年3月4日1235 2347 3456.6889245|
+-------------------------------------------------------+

您可以随机选择以下观察结果:

clear

input str5 Month str10 Date Time1 Time2 Time3
Jan      "01/01/2018"   1234  2345   3456
Jan      "02/01/2018"   1234  2346   3457
Jan      "03/02/2018"   1234  2346   3145
Feb      "03/02/2018"   1234  2347   3458
Feb      "04/02/2018"   1235  2398   3456
March    "04/03/2018"   1235  2347   3456
March    "01/03/2018"   1236  2345   3456
March    "02/03/2018"   1234  2567   3897
Feb      "02/02/2018"   1236  2346   3478
end

bysort Month (Time1): generate random = runiform()
bysort Month (Time1 random): keep if _n < 3

list, sepby(Month)

     +-------------------------------------------------------+
     | Month         Date   Time1   Time2   Time3     random |
     |-------------------------------------------------------|
  1. |   Feb   03/02/2018    1234    2347    3458   .3576297 |
  2. |   Feb   04/02/2018    1235    2398    3456   .4004426 |
     |-------------------------------------------------------|
  3. |   Jan   02/01/2018    1234    2346    3457   .2076905 |
  4. |   Jan   01/01/2018    1234    2345    3456   .5597356 |
     |-------------------------------------------------------|
  5. | March   02/03/2018    1234    2567    3897   .0286627 |
  6. | March   04/03/2018    1235    2347    3456   .6889245 |
     +-------------------------------------------------------+
清除
输入str5个月str10日期时间1时间2时间3
2018年1月1日1234 2345 3456
2018年1月2日1234 2346 3457
2018年2月3日1234 2346 3145
2018年2月3日1234 2347 3458
2018年2月4日1235 2398 3456
2018年3月4日1235 2347 3456
2018年3月1日1236 2345 3456
2018年3月2日1234 2567 3877
2018年2月2日1236 2346 3478
结束
按排序月份(时间1):生成random=runiform()
按排序月份(时间1随机):如果小于3,则保留
列表,九月(月)
+-------------------------------------------------------+
|月份日期时间1时间2时间3随机|
|-------------------------------------------------------|
1. |   2018年2月3日1234 2347 3458.3576297|
2. |   2018年2月4日1235 2398 3456.4004426|
|-------------------------------------------------------|
3. |   2018年1月2日1234 2346 3457.2076905|
4. |   2018年1月1日1234 2345 3456.5597356|
|-------------------------------------------------------|
5. | 2018年3月2日1234 2567 3877.0286627|
6. | 2018年3月4日1235 2347 3456.6889245|
+-------------------------------------------------------+