2

我在 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(",")

这似乎工作正常,只是它没有将数字变量放在“”内。

4

1 回答 1

4

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

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

首先,也更容易:如果你使用tostring你改变你的数据,那么对新的字符串变量进行数字操作就变得不可能了。这相对容易解决。只需在使用前先确保您save的数据tostring,然后在导出数据后再次读回即可。或使用preserve后跟restore.

其次,也是更多的问题:您需要担心任何非整数数值变量的细节丢失。tostring在这里确实有一些有用的选项,但是除非您进入导出十六进制的噩梦领域,否则无法保证保留每一位。无论如何,这是正确的outsheet,但是警告应该没有害处。

tostring作为其原作者,我知道 的历史。我将记录在案,尽管它是您似乎想要做的事情的解决方案,但存在上述陷阱,我不推荐这种工作方式。

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

PS 正如在其他地方强调的那样,Stata 不将“”视为分隔符。它们是字符串的分隔符,但不是字段(或 Stata 意义上的单词)的分隔符。

于 2013-06-01T00:34:24.880 回答