在 Stata 中将数字更改为字符串变量
Changing a numeric to a string variable in Stata
我有一个变量 ShiftStart
,它是一个格式为 01jan2014 06:59:59
的数字变量(依此类推)。我想将它更改为一个字符串变量,这样我就可以对其进行子字符串化,并分别根据日期和时间创建变量。
当我尝试时
generate str20 string_shiftstart=string(ShiftStart)
我创建了一个字符串,但所有单元格都已转换为奇怪的值(“1.70e+12”等)。
ShiftStart
转成字符串后如何保留原来的内容?
您似乎有一个格式为 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,Stata 期刊,作者:Nicholas J. Cox。
编辑
回答你的最后一个问题:
如果您想要创建标记 pre/post 个周期的指标变量,一种方法是使用 td()
(请参阅 help
文件)。按照上面给出的例子:
// before 04jan1960
gen pre = date < td(04jan1960)
并非总是需要创建此指示变量。大多数命令都允许使用 if
限定符,您可以直接插入条件。参见 help if
。
如果你有别的意思,你应该更明确。
我有一个变量 ShiftStart
,它是一个格式为 01jan2014 06:59:59
的数字变量(依此类推)。我想将它更改为一个字符串变量,这样我就可以对其进行子字符串化,并分别根据日期和时间创建变量。
当我尝试时
generate str20 string_shiftstart=string(ShiftStart)
我创建了一个字符串,但所有单元格都已转换为奇怪的值(“1.70e+12”等)。
ShiftStart
转成字符串后如何保留原来的内容?
您似乎有一个格式为 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,Stata 期刊,作者:Nicholas J. Cox。
编辑
回答你的最后一个问题:
如果您想要创建标记 pre/post 个周期的指标变量,一种方法是使用 td()
(请参阅 help
文件)。按照上面给出的例子:
// before 04jan1960
gen pre = date < td(04jan1960)
并非总是需要创建此指示变量。大多数命令都允许使用 if
限定符,您可以直接插入条件。参见 help if
。
如果你有别的意思,你应该更明确。