【问题标题】:Stata: importing txt with several multi character delimitersStata:导入带有多个多字符分隔符的txt
【发布时间】:2021-05-15 09:46:58
【问题描述】:

我有非常奇怪的分隔符的数据:

1,|ABC1|,|BUD|,|Fed Budget & Appropriations|,|t1|
2,|ABC2|,|LBR|,|Labor, Antitrust & Workplace|,|t2|
3,|ABC3|,|UNM|,|Unemployment|,|t1|

所以分隔符是逗号和每个变量,但第一个(标识符)在两个管道之间。问题是第四个变量也使用逗号,所以我不能简单地使用逗号作为分隔符并删除管道。我已经找到了一种通过终端执行一些查找和替换操作来处理数据的方法,但我想通过 Stata 执行此操作。有人知道怎么做吗?

【问题讨论】:

    标签: import stata delimiter txt


    【解决方案1】:

    我将您的数据示例放入一个文本文件中,发现分隔符可以很好地自动检测到。然后,我使用 Stata Journal 中的 findname dropped 任何全逗号或全缺失的变量。

    . import delimited "troublesome.txt"
    (9 vars, 3 obs)
    
    . list 
    
         +-------------------------------------------------------------------------+
         | v1     v2   v3    v4   v5                             v6   v7   v8   v9 |
         |-------------------------------------------------------------------------|
      1. | 1,   ABC1    ,   BUD    ,    Fed Budget & Appropriations    ,   t1    . |
      2. | 2,   ABC2    ,   LBR    ,   Labor, Antitrust & Workplace    ,   t2    . |
      3. | 3,   ABC3    ,   UNM    ,                   Unemployment    ,   t1    . |
         +-------------------------------------------------------------------------+
    
    . findname, all(@ == ",")
    v3  v5  v7
    
    . drop `r(varlist)'
    
    . findname, all(missing(@))
    v9
    
    . drop `r(varlist)'
    
    . destring v1, ignore(",") replace
    v1: character , removed; replaced as byte
    
    . list 
    
         +-----------------------------------------------------+
         | v1     v2    v4                             v6   v8 |
         |-----------------------------------------------------|
      1. |  1   ABC1   BUD    Fed Budget & Appropriations   t1 |
      2. |  2   ABC2   LBR   Labor, Antitrust & Workplace   t2 |
      3. |  3   ABC3   UNM                   Unemployment   t1 |
         +-----------------------------------------------------+
     
    

    【讨论】:

    • 太棒了!这解决了问题。但是我在查看数据时不够仔细。当我通过允许自动检测分隔符来读取数据时,还会出现一些其他问题。我现在已经编辑了我的问题,以表明我的意思
    • 抱歉,我再次说明的不够清楚。在第二个示例中,某些变量中仍然有逗号。我再次编辑问题
    • 我的错,我将删除编辑并用它打开一个新问题。我的第一个问题已经回答了。谢谢!
    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 2019-09-01
    • 2013-08-13
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2020-10-03
    相关资源
    最近更新 更多