2013-08-14 3 views
5

Я новичок в Stata, и мне интересно, как я могу изменить строковую переменную, которая содержит дату в формате даты.Stata: как изменить строковую переменную на дату?

Данные в переменной выглядит следующим образом:

гггг-мм-дд

Должен ли я сначала удалить тире, так что Stata может распознать формат для того, чтобы позже использовать gen var = date()?

Благодарим за помощь.

+0

Вы получили ответ, который вам нужен? \ –

+0

Слово «формат» здесь коварно. «yyyy-mm-dd» как шаблон или стиль для проведения дат - это формат (смысл 1). Присвоение формата отображения даты в формате Stata с помощью команды 'format' - это смысл слова Stata (смысл 2), но этого недостаточно. Формат даты (смысл 3) означает, что ежедневные даты хранятся численно и подсчитываются относительно 1 января 1960 года. –

ответ

8

date функция Stata умна об удалении символов разделителей. См help datetime_translation в разделе «функции даты»

Если ваши даты в v1 и в форме yyyy-mm-dd вы можете указать команды:

generate v2 = date(v1, "YMD") 
format %td v2 

В YMD называется маска, и он говорит Stata - порядок, в котором указаны части даты. Во второй строке будет назначаться переменная формата даты Stata, что означает, что когда вы посмотрите на эту переменную в данных, она будет показана в форме для человека. Однако дата сохраняется, как количество дней с 1 января 1960 года.

Лучшим способом эксперимента с функцией date является использование команды display. В первой строке отобразится целое число, представляющее количество дней с 1 января 1960 года. Вторая строка отобразит дату в человекообразном формате.

display date("2013-08-14", "YMD") 
display %td date("2013-08-14", "YMD") 
+1

Я немного изменил описание форматирования. Люди слишком часто путают назначение формата отображения с изменением того, что хранится. Твоя формулировка была хорошей, но я еще сильнее ее подтянул. –

+0

Спасибо, что сработало для меня! – roland

+0

Ты - спасатель !!! – Abramodj

1

вы можете посмотреть here, чтобы увидеть, как преобразовать данные в Stata или сделать как этот

tostring datedx, replace 
generate str4 dxyr1= substr(datedx,1,4) 
generate str2 dxmo1 = substr(datedx,6,7) 
generate str2 dxda1 = substr(datedx,9,10) 
destring dx*, replace 
gen datedx1 = mdy(dxmo1, dxda1, dxyr1) 
+1

OP начинается со строковой переменной, поэтому 'tostring' является избыточным, но безвредным. Использование функции 'date()', как и в ответе @sechilds, гораздо более прямое. –

+0

@NickCox yes sir –

Смежные вопросы