Stata: 文本分析之 tex2col 命令-文字变表格

论坛 期权论坛 期权     
Stata连享会   2019-5-10 12:22   7722   0
[h2][/url][/h2]
作者: 刘聪聪 (中山大学)
Stata 连享会: 知乎 | 简书 | 码云
[url=http://mp.weixin.qq.com/s?__biz=MzAwMzk4ODUzOQ==&mid=2247485104&idx=1&sn=8c47b6a91d36cd81fc57f9b9cdd550b6&chksm=9b338be4ac4402f2e2b7358a827202258691bdd76d656d07eca27ce50905f1d47dd6042e0071&scene=21#wechat_redirect]python 爬虫与文本分析专题-现场班

  1. tex2col
复制代码
命令旨在将一个Stata单元格的内容分成不同的列,主要适用于从 PDF 文件中提取数据并以简单的方式管理。使用此命令可将选定的数据转换为表格,将文本拆分为不同的列。
该命令可以将以逗号、空格分隔的表格 (无法直接粘贴到 Excel 中) 转换成以 Tab 分隔的表格,同时采用
  1. ignore("chars")
复制代码
选项可达到去掉 %、千分位 等符号的效果。
[h1]1.tex2col   命令简介[/h1][h2]下载和安装[/h2]使用如下命令可以自动下载
  1. tex2col
复制代码
命令:
    1. ssc install tex2col, replace
    复制代码
[h2]帮助文件和语法格式[/h2]
    1. help tex2col  //Split Text into Columns
    复制代码

    1. tex2col [if] [in] [,
    复制代码
    1.                columns(#)
    复制代码
    1.                data(string)
    复制代码
    1.                cname(stub)
    复制代码
    1.                rname(newvarname)
    复制代码
    1.                dpcomma
    复制代码
    1.                ignore("chars")]
    复制代码
各个选项的含义如下:
选项解释
  1. columns(#)
复制代码
Number of columns with data
  1. data(string)
复制代码
Name of the variable that contains the data
  1. cname(stub)
复制代码
Column names
  1. rname(newvarname)
复制代码
Row name
  1. dpcomma
复制代码
Convert data with commas as decimals to period-decimal format
  1. ignore("chars")
复制代码
Remove specified non-numeric characters[h1]2.Stata 范例[/h1]
Example 1: 逗号分隔的文本文件 → 表格
    1.     clear
    复制代码
    1.     input str60 (data)
    复制代码
    1.         "Chaco Hamedo 16,6 25,1 21,5 881,5 58 73 66"
    复制代码
    1.         "Chaco Seco 16,2 24,3 21,3 736,1 60 79 71"
    复制代码
    1.         "Valles Centrales 14,7 18,3 16,9 721,4 50 74 62"
    复制代码
    1.         "Valles del Sur 12,2 18,1 16 351,3 40 70 53"
    复制代码
    1.     end
    复制代码

    1.     tex2col, data(data) col(7) dpcomma  // dpcomma: 把逗号转换成句点
    复制代码
    1.     list row col*, clean
    复制代码
结果如下:
    1. . list row col*, clean
    复制代码

    1.                     row   col_1   col_2   col_3   col_4   col_5   col_6   col_7  
    复制代码
    1.   1.       Chaco Hamedo    16.6    25.1    21.5   881.5      58      73      66  
    复制代码
    1.   2.         Chaco Seco    16.2    24.3    21.3   736.1      60      79      71  
    复制代码
    1.   3.   Valles Centrales    14.7    18.3    16.9   721.4      50      74      62  
    复制代码
    1.   4.     Valles del Sur    12.2    18.1      16   351.3      40      70      53
    复制代码
注意事项:
  • 使用
    1. input str##
    复制代码
    输入数据时,由于变量都是字符串类型,所以每一行观察值都要用半角双引号包围。
    1. tex2col
    复制代码
    命令中的
    1. col(#)
    复制代码
    选项是必填项,# 需要根据数据的列数自行指定。
Example 2: 空格分隔的文本文件 → 表格
    1.     clear
    复制代码
    1.     input str60 (data)
    复制代码
    1.         "Argentina 2011 18.7%"
    复制代码
    1.         "Bolivia 2011 0.4%"
    复制代码
    1.         "Brasil 2011 3.6%"
    复制代码
    1.         "Chile 2011 1.7%"
    复制代码
    1.         "Colombia 2011 5.2%"
    复制代码
    1.         "Costa Rica 2010 8.0%"
    复制代码
    1.         "Ecuador 2011 3.1%"
    复制代码
    1.         "El Salvador 2010 0.3%"
    复制代码
    1.         "Honduras 2011 3.0%"
    复制代码
    1.         "Mexico 2010 3.1%"
    复制代码
    1.         "Panam 2011 0.6%"
    复制代码
    1.         "Paraguay 2010 0.9%"
    复制代码
    1.         "Per 2011 24.1%"
    复制代码
    1.         "Uruguay 2011 4.3%"
    复制代码
    1.         "Venezuela 2011 10.3%"
    复制代码
    1.     end
    复制代码

    1.     tex2col, data(data) col(2) ignore(%)
    复制代码
    1.     list
    复制代码
结果如下:
    1. .list               
    复制代码
    1.      +-----------------------------------------------------+
    复制代码
    1.      |         row   col_1   col_2                    data |
    复制代码
    1.      |-----------------------------------------------------|
    复制代码
    1.   1. |   Argentina    2011    18.7    Argentina 2011 18.7% |
    复制代码
    1.   2. |     Bolivia    2011      .4       Bolivia 2011 0.4% |
    复制代码
    1.   3. |      Brasil    2011     3.6        Brasil 2011 3.6% |
    复制代码
    1.   4. |       Chile    2011     1.7         Chile 2011 1.7% |
    复制代码
    1.   5. |    Colombia    2011     5.2      Colombia 2011 5.2% |
    复制代码
    1.      |-----------------------------------------------------|
    复制代码
    1.   6. |  Costa Rica    2010       8    Costa Rica 2010 8.0% |
    复制代码
    1.   7. |     Ecuador    2011     3.1       Ecuador 2011 3.1% |
    复制代码
    1.   8. | El Salvador    2010      .3   El Salvador 2010 0.3% |
    复制代码
    1.   9. |    Honduras    2011       3      Honduras 2011 3.0% |
    复制代码
    1. 10. |      Mexico    2010     3.1        Mexico 2010 3.1% |
    复制代码
    1.      |-----------------------------------------------------|
    复制代码
    1. 11. |       Panam    2011      .6         Panam 2011 0.6% |
    复制代码
    1. 12. |    Paraguay    2010      .9      Paraguay 2010 0.9% |
    复制代码
    1. 13. |         Per    2011    24.1          Per 2011 24.1% |
    复制代码
    1. 14. |     Uruguay    2011     4.3       Uruguay 2011 4.3% |
    复制代码
    1. 15. |   Venezuela    2011    10.3    Venezuela 2011 10.3% |
    复制代码
    1.      +-----------------------------------------------------+
    复制代码
注意事项:      
    1. tex2col
    复制代码
    命令中的
    1. ignore("chars")
    复制代码
    选项是选填项,chars 根据数据的特征自行指定。
Example 3: 去掉千分位符号
    1.   clear
    复制代码
    1.   input str200 (data)   
    复制代码
    1.     "738 0.333 . . . . ."
    复制代码
    1.     "738 0.802 0.802 4,527 0.708 5.33 0.000"
    复制代码
    1.     "738 0.560 0.560 4,527 0.398 8.28 0.000"
    复制代码
    1.     "738 0.420 0.420 4,527 0.114 22.16 0.000"
    复制代码
    1.     "738 0.225 0.225 4,527 0.068 14.10 0.000"
    复制代码
    1.     "738 0.234 0.234 4,527 0.101 10.44 0.000"
    复制代码
    1.   end
    复制代码
    1.   compress
    复制代码

    1.   tex2col, data(data) col(7) cname(v) ignore(,)
    复制代码
    1.   list row v*, clean noobs   
    复制代码
结果如下:
    1. list row v*, clean noobs
    复制代码
    1.     row    v1     v2     v3     v4     v5      v6   v7  
    复制代码
    1.           738   .333      .      .      .       .    .  
    复制代码
    1.           738   .802   .802   4527   .708    5.33    0  
    复制代码
    1.           738    .56    .56   4527   .398    8.28    0  
    复制代码
    1.           738    .42    .42   4527   .114   22.16    0  
    复制代码
    1.           738   .225   .225   4527   .068    14.1    0  
    复制代码
    1.           738   .234   .234   4527   .101   10.44    0  
    复制代码
注意事项:
    1. tex2col
    复制代码
    命令中的
    1. cname(stub)
    复制代码
    选项是选填项,定义拆分后的列名。
  • 须保持原始数据中某一列数据类型一致,否则
    1. tex2col
    复制代码
    命令不能奏效。详细说明如下:

    1.   clear
    复制代码
    1.   input str200 (data)   
    复制代码
    1.     "738 0.333 . d . . ."
    复制代码
    1.     "738 0.802 0.802 4,527 0.708 5.33 0.000"
    复制代码
    1.     "738 0.560 0.560 4,527 0.398 8.28 0.000"
    复制代码
    1.     "738 0.420 0.420 4,527 0.114 22.16 0.000"
    复制代码
    1.     "738 0.225 0.225 4,527 0.068 14.10 0.000"
    复制代码
    1.     "738 0.234 0.234 4,527 0.101 10.44 0.000"
    复制代码
    1.   end
    复制代码
    1.   compress
    复制代码

    1.   tex2col, data(data) col(7) cname(v) ignore(,)
    复制代码
    1.   list row v*, clean noobs
    复制代码
当将第一行、第四列的数据  
  1. .
复制代码
  改为
  1. d
复制代码
,这个时候第四列的数据类型就有字符型和数值型两种类型。而经过
  1. tex2col
复制代码
命令处理后,可以发现第四列的数据类型全部变成了字符型了。这也就说明,
  1. tex2col
复制代码
在执行的时候会判断某一列的数据类型,如果这一列中有字符型,那么
  1. ignore(#)
复制代码
选项自然就失去作用了。

image.png[h3]其他文本分析命令[/h3]
    1. help screening
    复制代码
    // 文字变量的清理 , Stata Journal 10-3
    1. help txttool
    复制代码
    // 文字变量的清理 , Stata Journal 14-4
    1. help tex_equal
    复制代码
    // 多个文本的对比
    1. help fren
    复制代码
    // 修改文件名称
    1. help fdta
    复制代码
    // 替换文字变量的内容
[h3]关于我们[/h3]
  • 【Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。
  • 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词
    1. Stata
    复制代码
    1. Stata连享会
    复制代码
    后关注我们。
  • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。
  • Stata连享会 精彩推文1   || 精彩推文2
[h3]联系我们[/h3]
  • 欢迎赐稿:  欢迎将您的文章或笔记投稿至
    1. Stata连享会(公众号: StataChina)
    复制代码
    ,我们会保留您的署名;录用稿件达
    1. 五篇
    复制代码
    以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 意见和资料:  欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
  • 招募英才:  欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 联系邮件:  StataChina@163.com
[h3]往期精彩推文[/h3]


欢迎加入Stata连享会(公众号: StataChina)[h2]一起学空间计量……[/h2][url=http://mp.weixin.qq.com/s?__biz=MzAwMzk4ODUzOQ==&mid=2247485064&idx=1&sn=58e05c5ef029356ddfe71cb6defefd4b&chksm=9b338bdcac4402caebd7ff2e33af05ad0133351e277040f5d365a3da2fdbf2d6036fe75f9789&scene=21#wechat_redirect][/url]
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:190
帖子:39
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP