import - 导入带有长度分隔符的文本文件
问题描述
我有一个文本文件,其中只包含数字。
例如:
2001 31110
199910 311
它的布局可以解释如下:
1~4th numbers : Year
5~6th numbers : Month
7~8th numbers : Day
9th number : Sex
10th number : Married
但是,我无法决定如何将此文件导入 Stata。
例如,如果我使用以下命令:
import delimited input.txt, delimiter(??)
我应该写delimiter
什么?
我不一定需要使用上述内容。我只想使用任何方法导入数据。
解决方案
答案取决于您以后要如何处理数据。
我的理解是空格表示与日期相关的数字的单个数字,并且在文本文件中,只有月份或日期可以是单个数字,但不能同时是两个数字。此外,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
通过在前面添加 a 将个位数的月份或日期更改为两位数。然后,在使用该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 |
+------------+
如果在您的文本文件中月份和日期都包含单个数字,则遵循与上述相同的逻辑,但在导入数据后还需要处理第三个变量。
推荐阅读
- php - 警告:strlen() 期望参数 1 是字符串,文件中给出的数组...在行中
- c++ - C++ 17:pthread 的 Makefile 标志
- python - Python中的引用语义混淆
- javascript - 使用 Firebase auth (Web) 捕获电子邮件更新错误
- r - 光栅 R 包中的错误 - UseMethod 中的错误(“conditionCall”)
- css - 根据子项的最大宽度居中内容?
- python - 错误:gpu_process_transport_factory.cc(1007)-丢失 UI 共享上下文:在无头模式下通过 ChromeDriver 初始化 Chrome 浏览器时
- javascript - 如何制作 document.write(); 不加文字?
- django - 将 javascript 文件添加到 django admin
- tensorflow - 无法在 tensorflow 官方 resnet 模型中加载用于 eval 的图像