Найти последнюю дату года - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть строковая переменная с годами:

clear
input str4 year
"2012"
"2013"
"2014"
"2015"
"2016"
"2017"
"2018"
end

Когда я делаю следующее, я не получаю 31dec201X везде:

g date = date(year, "Y") + 364
form date %td 

l

     +------------------+
     | year        date |
     |------------------|
  1. | 2012   30dec2012 |
  2. | 2013   31dec2013 |
  3. | 2014   31dec2014 |
  4. | 2015   31dec2015 |
  5. | 2016   30dec2016 |
     |------------------|
  6. | 2017   31dec2017 |
  7. | 2018   31dec2018 |
     +------------------+

Как мне узнать последнюю дату декабря во всех наблюдениях?

1 Ответ

1 голос
/ 20 апреля 2019

Вместо функции date() вы можете использовать yearly() и dofy():

generate wanted = dofy(yearly(year, "Y") + 1) - 1
format wanted %td 

list, separator(0) 

     +------------------+
     | year      wanted |
     |------------------|
  1. | 2012   31dec2012 |
  2. | 2013   31dec2013 |
  3. | 2014   31dec2014 |
  4. | 2015   31dec2015 |
  5. | 2016   31dec2016 |
  6. | 2017   31dec2017 |
  7. | 2018   31dec2018 |
     +------------------+

Это более общее решение, идея которого состоит в том, чтобы найти первый день следующего года и вычесть один.

...