Добавление наборов данных по сопоставленным переменным - PullRequest
0 голосов
/ 11 октября 2018

Мне нужно добавить три набора данных с именами A, B и C, которые содержат данные за разные годы (например, 1990, 1991...2014).

Проблема заключается в том, что не все наборы данных содержат все годы обследования, и поэтому несоответствующие годы необходимо отбрасывать вручную перед добавлением.

Я хотел бы знать, есть ли способ добавить три (или более) набора данных, в которых будут храниться только совпадающие переменные в наборах данных (в данном случае, годы).

1 Ответ

0 голосов
/ 11 октября 2018

Рассмотрим следующий пример игрушки:

clear

input year var
1995 0
1996 1
1997 2
1998 3 
1999 4
2000 5
end

save data1, replace

clear

input year var
1995 6
1996 9
1998 7 
1999 8
2000 9
end

save data2, replace

clear

input year var
1995 10
1996 11
1997 12
2000 13
end

save data3, replace

Нет опции, которая заставит append делать то, что вы хотите, но вы можете сделать следующее:

use data1, clear

append using data2 data3
duplicates tag year, generate(tag)

sort year
list

     +------------------+
     | year   var   tag |
     |------------------|
  1. | 1995     0     2 |
  2. | 1995     6     2 |
  3. | 1995    10     2 |
  4. | 1996     9     2 |
  5. | 1996     1     2 |
     |------------------|
  6. | 1996    11     2 |
  7. | 1997     2     1 |
  8. | 1997    12     1 |
  9. | 1998     7     1 |
 10. | 1998     3     1 |
     |------------------|
 11. | 1999     8     1 |
 12. | 1999     4     1 |
 13. | 2000    13     2 |
 14. | 2000     5     2 |
 15. | 2000     9     2 |
     +------------------+

drop if tag == 1
list

     +------------------+
     | year   var   tag |
     |------------------|
  1. | 1995     0     2 |
  2. | 1995     6     2 |
  3. | 1995    10     2 |
  4. | 1996     9     2 |
  5. | 1996     1     2 |
     |------------------|
  6. | 1996    11     2 |
  7. | 2000    13     2 |
  8. | 2000     5     2 |
  9. | 2000     9     2 |
     +------------------+

Вы также можете дополнительно обобщить этот подход, найдя максимальное значение переменной tag и сохранив все наблюдения с этим значением:

summarize tag
keep if tag == `r(max)'
...