用于引用和逗号分隔文本的Outsheet

时间:2013-06-01 00:14:16

标签: delimiter stata

我在Stata中的变量形式如下:

  First Name: Allen
  Last Name: Von Schmidt
  Birth Year: 1965
  County: Cape May
  State: New Jersey

  First Name: Lee Roy
  Last Name: McBride
  Birth Year: 1967
  County: Cook
  State: Illinois

我想outsheet他们在.txt中创建引号和逗号分隔的行:

 "Allen,"Von Schmidt","1965","Cape May","New Jersey"
 "Lee Roy","McBride","1967","Cook","Illinois"

如何使用outsheet(或其他命令)执行此操作?我是否需要先将数字变成字符串?我是否需要先为每个变量添加逗号?

我尝试了以下内容:

outsheet first last birth_year county state using FileName.txt, nolabel delim(",")

这似乎没有问题,只是它没有将数字变量放在“”。

1 个答案:

答案 0 :(得分:4)

我不明白你为什么要这样做,但Stata在其他地方的做法是只有字符串放在双引号中。因此,要输出数值变量就像它们是字符串一样,您需要先将它们转换为字符串变量。 tostring命令是为此而设计的。

但这是一个尴尬的事情,总的来说是一个坏主意。

首先,更容易:如果使用tostring,则更改数据,并且在新的字符串变量上无法进行数值运算。这相对容易解决。在使用save之前,请确保先tostring您的数据,然后在导出数据后再次将其读回。或者使用preserve后跟restore

其次,问题更多:您需要担心任何非整数的数字变量的细节丢失。 tostring确实有选项在这里提供帮助,但除非你进入导致十六进制的恶梦领域,否则无法保证每一点。 outsheet任何方式都是如此,但警告不应该造成伤害。

我知道tostring的历史,原作者。我会记录下来,虽然它是你想要做的解决方案,但是上面有一些陷阱,我不推荐这种工作方式。

最好解释为什么你认为你需要这样做。 outsheet出口数字和字符串似乎很适合出口到其他软件,尤其是电子表格,用于许多用途。

P.S。正如其他地方所强调的那样,Stata并不认为“”是分隔符。它们是字符串的分隔符,但不是字段的分隔符(或Stata意义上的单词)。