Stata 导入以逗号作为小数分隔符的数字的csv

Stata 导入以逗号作为小数分隔符的数字的csv,stata,decimal-point,Stata,Decimal Point,我有一个5 gbcsv文件,导入到stata需要一个多小时 原因是,除其他外,它是欧洲格式的,即它是一个分隔的文件和数字列带有,作为十进制分隔符。例如: V1 V2 V3 A 2,4 10,1 B 30 1,4 问题是stata假设数值列是字符串变量,因此,尝试以一种非常低效的方式导入它(尝试将列声明为数值只会给我缺少的值) 是否有一个命令/选项,我可以在其中输入不同的小数点分隔符,以加快导入过程?如果您的数据文件如下所示: A; 2,4; 10,1 B; 30; 1,

我有一个5 gb
csv
文件,导入到stata需要一个多小时

原因是,除其他外,它是欧洲格式的,即它是一个
分隔的文件和数字列带有
作为十进制分隔符。例如:

V1  V2   V3
A   2,4  10,1
B   30   1,4
问题是
stata
假设数值列是字符串变量,因此,尝试以一种非常低效的方式导入它(尝试将列声明为数值只会给我缺少的值)


是否有一个命令/选项,我可以在其中输入不同的小数点分隔符,以加快导入过程?

如果您的数据文件如下所示:

A; 2,4; 10,1  
B; 30; 1,4
A; 2,4; 10,1  
B; 30; 1,4
您可以执行以下操作:

import delimited whatever_filename.txt, delimiters(";") varnames(nonames)
destring v2 v3, dpcomma replace

list

   +-----------------+
   | v1    v2     v3 |
   |-----------------|
1. |  A   2.4   10.1 |
2. |  B    30    1.4 |
   +-----------------+
import delimited "D:\data.csv", varnames(nonames) parselocale(es_ES)

从Stata版本15开始,没有一种方法可以一步完成。我认为唯一的其他解决方案是通过将逗号更改为句点来预处理数据文件。Excel可以轻松做到这一点

如果您的数据文件如下所示:

A; 2,4; 10,1  
B; 30; 1,4
A; 2,4; 10,1  
B; 30; 1,4
您可以执行以下操作:

import delimited whatever_filename.txt, delimiters(";") varnames(nonames)
destring v2 v3, dpcomma replace

list

   +-----------------+
   | v1    v2     v3 |
   |-----------------|
1. |  A   2.4   10.1 |
2. |  B    30    1.4 |
   +-----------------+
import delimited "D:\data.csv", varnames(nonames) parselocale(es_ES)

从Stata版本15开始,没有一种方法可以一步完成。我认为唯一的其他解决方案是通过将逗号更改为句点来预处理数据文件。Excel可以轻松做到这一点

我认为您正在寻找的功能已添加到Stata 16中。命令
import delimited
有新的选项
parselocale()
groupseparator()
,和
decimalseparator()

请参见以下
10/c
中的新内容15至16

help whatsnew15to16
  • import delimited是从中导入数据的现有命令 分隔的文本文件。它得到了加强

    a。它更快。一般来说,速度快10%,是原来的2到4倍 在某些情况下速度更快

    b。它可以更好地检测分隔符。除了逗号和制表符之外,它 现在检测管道、冒号和分号

    c。新选项允许基于区域设置进行数字解析。选择 是parselocale()、groupseparator()和decimalseparator()

    d。将报告导入文件中不匹配的引号,以便 我能修好它们

  • 有关数据:

    您可以执行以下操作:

    import delimited whatever_filename.txt, delimiters(";") varnames(nonames)
    destring v2 v3, dpcomma replace
    
    list
    
       +-----------------+
       | v1    v2     v3 |
       |-----------------|
    1. |  A   2.4   10.1 |
    2. |  B    30    1.4 |
       +-----------------+
    
    import delimited "D:\data.csv", varnames(nonames) parselocale(es_ES)
    


    我认为您正在寻找的功能已添加到Stata 16中。命令
    import delimited
    有新的选项
    parselocale()
    groupseparator()
    ,和
    decimalseparator()

    请参见以下
    10/c
    中的新内容15至16

    help whatsnew15to16
    
  • import delimited是从中导入数据的现有命令 分隔的文本文件。它得到了加强

    a。它更快。一般来说,速度快10%,是原来的2到4倍 在某些情况下速度更快

    b。它可以更好地检测分隔符。除了逗号和制表符之外,它 现在检测管道、冒号和分号

    c。新选项允许基于区域设置进行数字解析。选择 是parselocale()、groupseparator()和decimalseparator()

    d。将报告导入文件中不匹配的引号,以便 我能修好它们

  • 有关数据:

    您可以执行以下操作:

    import delimited whatever_filename.txt, delimiters(";") varnames(nonames)
    destring v2 v3, dpcomma replace
    
    list
    
       +-----------------+
       | v1    v2     v3 |
       |-----------------|
    1. |  A   2.4   10.1 |
    2. |  B    30    1.4 |
       +-----------------+
    
    import delimited "D:\data.csv", varnames(nonames) parselocale(es_ES)
    


    是的,这是主要问题,一步到位。我的问题在于您的第一行,它将V2和V3作为字符串导入,这使得导入方式效率低下。如果您能想出更好的解决方案,您可以吹毛求疵地寻找解决方案!是的,这是主要问题,一步到位。我的问题在于您的第一行,它将V2和V3作为字符串导入,这使得导入方式效率低下。如果您能想出更好的解决方案,您可以吹毛求疵地寻找解决方案!你找到一种一步完成的方法了吗?没有,我试着给开发团队发电子邮件,但是要求任何东西都是一个非常官僚的过程。到目前为止,我的结论是,对于现有版本,如果不更改源代码以导入excel文件,就不可能做到这一点。您是否找到了一种一步完成此操作的方法?不,我已尝试向
    Stata
    开发团队发送电子邮件,但提出任何要求都是一个非常官僚的过程。到目前为止,我的结论是,对于现有版本,如果不更改源代码以导入excel文件,就不可能做到这一点。谢谢,但奇怪的是,stata花了那么长时间才进行了如此简单和必要的更改。谢谢,但奇怪的是,stata花了那么长时间才进行了如此简单和必要的更改。