将日期变量转换为数字

Convert date variable to numeric

感觉像是一个显而易见的问题,但 Stata 帮助没有给出答案。大多数 Stata 用户都对将非日期变量转换为日期变量感兴趣,但我想要相反的结果。

我有一个日期变量 date,类型长,格式 %tdCCYYNN。我试图将它附加到一个数据集,其中相同的变量 date 的类型为 long 且格式为 %12.0g。为了准确地做到这一点,我需要将第一个数据集中的 date%tdCCYYNN 转换为 %12.0g。当我执行 format %12.0g date 时,date 值变为不正确的值。

比方说,在第一个数据集中,我有 date=201204。我仍然希望它读作 201204,就像 %12.0g 变量一样。有办法吗?

我 +1 Nick 和 William 以上所有评论,并建议您阅读 help datetime。我已经使用 Stata 几年了,仍然经常访问这个帮助文件。 Stata 的 date/time 功能非常棒,早点学习它会让您受益匪浅。

我会将其他数据转换为 Stata 日期格式真的。但是,如果您需要将 %td 日期转换为 "integer YYYYNN" 日期,则通过一个临时文件。如果您将 %td 日期写入纯文本,那么它会保持显示的格式,您可以将其作为整数 YYYYNN 日期读回。

// data that matches your decsription
clear
set obs 1
generate date = date("20120401", "YMD")
format date %tdCCYYNN
list

// write to tempfile as plain text
tempfile plainText
outsheet using "`plainText'"

// read back with dates as integers
preserve
tempfile StataData
insheet using "`plainText'", clear
rename date dateInteger
save "`StataData'"
restore

// merge to original data
merge 1:1 _n using "`StataData'"
list
describe

这会产生以下结果。

. list

     +---------------------------------+
     |   date   dateIn~r        _merge |
     |---------------------------------|
  1. | 201204     201204   matched (3) |
     +---------------------------------+

. describe

Contains data
  obs:             1                          
 vars:             3                          
 size:             7                          
-----------------------------------------------------------------------------------------------------
              storage   display    value
variable name   type    format     label      variable label
-----------------------------------------------------------------------------------------------------
date            int     %tdCCYYNN             
dateInteger     long    %12.0g                
_merge          byte    %23.0g     _merge     
-----------------------------------------------------------------------------------------------------
Sorted by: 
     Note: Dataset has changed since last saved.

但我建议您利用 Stata 的 date/time 功能。