Stata: импорт txt с несколькими многосимвольными разделителями

У меня есть данные с очень странными разделителями:

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

Таким образом, разделитель — это запятая и каждая переменная, но первая (идентификатор) находится между двумя вертикальными чертами. Проблема в том, что четвертая переменная также использует запятые, поэтому я не могу просто использовать запятые в качестве разделителей и удалить каналы. Я нашел способ работать с данными, выполнив некоторые операции поиска и замены через терминал, но я хотел бы сделать это через Stata. Кто-нибудь знает, как это сделать?


person ArOk    schedule 11.02.2021    source источник


Ответы (1)


Я поместил ваш пример данных в текстовый файл и обнаружил, что разделители довольно хорошо обнаруживаются автоматически. Затем я dropпроверил любую переменную, в которой были все запятые или все отсутствовало, используя findname из Stata Journal.

. 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 |
     +-----------------------------------------------------+
 
person Nick Cox    schedule 11.02.2021
comment
Большой! Это решило проблему. Но я не был достаточно внимателен при просмотре своих данных. Есть некоторые дополнительные проблемы, которые возникают, когда я просто читаю данные, позволяя автоматически определять разделители. Я отредактировал свой вопрос сейчас, чтобы показать, что я имею в виду - person ArOk; 11.02.2021
comment
Извините, опять я не достаточно ясно выразился. Во втором примере у меня все еще есть запятые в некоторых переменных. Я снова редактирую вопрос - person ArOk; 11.02.2021
comment
Плохо, я удалю редактирование и открою новый вопрос с ним. Ответ на мой первый вопрос получен. Спасибо! - person ArOk; 12.02.2021