【问题标题】:converting very long string into numeric将很长的字符串转换为数字
【发布时间】:2018-04-13 23:18:08
【问题描述】:

我在面板数据集中有一个人识别号变量,它是字符串类型,有 19 个字符 (str19)。每当我使用destring 命令将其转换为数字时,我都会丢失精度,因为它被转换为double(最多16 个字符)或float,这意味着ID 号不再唯一地标识受访者。我需要它是数字才能将数据视为面板(xt 命令)。我能做什么?

【问题讨论】:

    标签: string stata numeric panel-data


    【解决方案1】:

    我能想到的最好的前进方式是使用egengroup() 函数来创建标识符。您没有提供数据或代码示例,但这说明了这一点。

    . 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

    【讨论】:

    • 感谢@Nick 成功了!我使用了以下代码:egen long panelid = group(ind) 其中 ind 是我的旧字符串标识变量,而 panelid 是新的数字变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2012-09-19
    • 2016-03-03
    • 2017-11-29
    • 2015-07-10
    相关资源
    最近更新 更多