【发布时间】:2018-04-13 23:18:08
【问题描述】:
我在面板数据集中有一个人识别号变量,它是字符串类型,有 19 个字符 (str19)。每当我使用destring 命令将其转换为数字时,我都会丢失精度,因为它被转换为double(最多16 个字符)或float,这意味着ID 号不再唯一地标识受访者。我需要它是数字才能将数据视为面板(xt 命令)。我能做什么?
【问题讨论】:
标签: string stata numeric panel-data
我在面板数据集中有一个人识别号变量,它是字符串类型,有 19 个字符 (str19)。每当我使用destring 命令将其转换为数字时,我都会丢失精度,因为它被转换为double(最多16 个字符)或float,这意味着ID 号不再唯一地标识受访者。我需要它是数字才能将数据视为面板(xt 命令)。我能做什么?
【问题讨论】:
标签: string stata numeric panel-data
我能想到的最好的前进方式是使用egen 的group() 函数来创建标识符。您没有提供数据或代码示例,但这说明了这一点。
. clear
. set obs 1
number of observations (_N) was 0, now 1
. gen strid = "1234567890123456789"
. egen numid = group(strid), label
. list
+-------------------------------------------+
| strid numid |
|-------------------------------------------|
1. | 1234567890123456789 1234567890123456789 |
+-------------------------------------------+
. list, nolabel
+-----------------------------+
| strid numid |
|-----------------------------|
1. | 1234567890123456789 1 |
+-----------------------------+
请注意,这是记录在案的:see this FAQ。
【讨论】:
egen long panelid = group(ind) 其中 ind 是我的旧字符串标识变量,而 panelid 是新的数字变量