Ответ зависит от того, что вы хотите сделать с данными позже.
Насколько я понимаю, пробелы указывают одну цифру для чисел, связанных с датой, и что в текстовом файле только месяц или день могут быть одной цифрой, но не обоими.Кроме того, sex
и married
- это двоичные индикаторы, принимающие значения 0
и 1
.
При условии, что вышеприведенные значения верны и данные ниже включены в файл data.txt
:
2001 31110
199910 311
1983 41201
2012121500
Вот один из способов сделать это:
clear
import delimited data.txt, delimiter(" ") stringcols(_all)
list
+--------------------+
| v1 v2 |
|--------------------|
1. | 2001 31110 |
2. | 199910 311 |
3. | 1983 41201 |
4. | 2012121500 |
+--------------------+
replace v2 = "0" + v2 if v2 != ""
generate v3 = v1 + v2
generate year = substr(v3, 1, 4)
generate month = substr(v3, 5, 2)
generate day = substr(v3, 7, 2)
generate date = substr(v3, 1, 8)
generate sex = substr(v3, 9, 1)
generate married = substr(v3, 10, 1)
list
+----------------------------------------------------------------------------------+
| v1 v2 v3 year month day date sex married |
|----------------------------------------------------------------------------------|
1. | 2001 031110 2001031110 2001 03 11 20010311 1 0 |
2. | 199910 0311 1999100311 1999 10 03 19991003 1 1 |
3. | 1983 041201 1983041201 1983 04 12 19830412 0 1 |
4. | 2012121500 2012121500 2012 12 15 20121215 0 0 |
+----------------------------------------------------------------------------------+
Вы в основном импортируете все максимум из двух строковых переменных с одним пробелом " "
, действующим в качестве разделителя.Месяцы или дни, состоящие из одной цифры, изменяются на две цифры, добавляя 0
спереди.Затем, после извлечения соответствующих частей строк с помощью функции substr()
, вы можете просто преобразовать результирующие переменные в числовые при необходимости.
Например:
destring year month day sex married, replace
generate date2 = daily(date, "YMD")
format date2 %tdDD-NN-CCYY
. list date2
+------------+
| date2 |
|------------|
1. | 11-03-2001 |
2. | 03-10-1999 |
3. | 12-04-1983 |
4. | 15-12-2012 |
+------------+
Если вваш текстовый файл, состоящий из месяца и дня, содержит одну цифру, вы следуете той же логике, что и выше, но вам нужно будет обработать третью переменную и после импорта данных.