在Stata中将数字更改为字符串变量

时间:2015-02-18 04:38:46

标签: string stata

我有一个变量ShiftStart,它是01jan2014 06:59:59格式的数字变量(依此类推)。我想将其更改为字符串变量,以便我可以将其子串,并根据日期和时间分别创建变量。

当我尝试

generate str20 string_shiftstart=string(ShiftStart)

我创建了一个字符串,但所有单元格都已转换为奇怪的值(“1.70e + 12”等等)。

如何将ShiftStart转换为字符串时保留原始内容?

1 个答案:

答案 0 :(得分:2)

您似乎有一个格式为 datetime 的变量。如果是这样,则无需转换为字符串。有适当的函数可以让你操作原始变量。这在help datetime

中有明确解释
clear
set more off

*----- example data -----

set obs 5

gen double datet = _n * 100000000
format datet %tc

list

*----- what you want -----

gen double date = dofc(datet)
format %td date

gen double hour =  hh(datet) + mm(datet)/60 + ss(datet)/3600

list

您发现原始结果令人惊讶的原因是您不知道 datetime 显示格式的基础是数值。

良好的阅读(help datetime除外)是

Stata tip 113: Changing a variable's format: What it does and does not mean,The Stata Journal,作者:Nicholas J. Cox。

修改

回答你的上一个问题:

如果要创建标记前/后期间的指示符变量,则一种方法是使用td()(请参阅help文件)。按照上面给出的例子:

// before 04jan1960
gen pre = date < td(04jan1960)

并不总是需要创建此指标变量。大多数命令允许使用if限定符,您可以直接插入条件。请参阅help if

如果你的意思是别的,你应该更明确。