確かに、これは Stata を離れることなく可能です。OS X を実行している Mac を使用しています。詳細はオペレーティング システムによって異なる場合がありますが、これは Windows であると推測しています。
Python と Stata メソッド
と呼ばれる次の簡単な Python プログラムがあるとしhello.py
ます。
#!/usr/bin/env python
import csv
data = [['name', 'message'], ['Monica', 'Hello World!']]
with open('data.csv', 'w') as wsock:
wtr = csv.writer(wsock)
for i in data:
wtr.writerow(i)
wsock.close()
この「プログラム」は、スクリプトの作業ディレクトリにある data.csv というファイルに偽のデータを書き込むだけです。スクリプトが実行可能であることを確認してください: chmod 755 hello.py
.
Stata 内から、次のことができます。
! ./hello.py
* The above line called the Python program, which created a data.csv file.
insheet using data.csv, comma clear names case
list
+-----------------------+
| name message |
|-----------------------|
1. | Monica Hello World! |
+-----------------------+
これは簡単な例です。ケースの完全なプロセスは次のとおりです。
outsheet
またはその他のコマンドを使用して、URL を使用してファイルをディスクに書き込みます。
!
Python スクリプトの呼び出しに使用
insheet
orinfile
またはその他のコマンドを使用して出力を Stata に読み込みます
- でファイルを削除してクリーンアップ
capture erase my_file_on_disk.csv
それが明確でない場合はお知らせください。*nix で問題なく動作します。私が言ったように、Windows は少し違うかもしれません。Windowsボックスがあれば、それをテストします。
Pure Stata ソリューション (一種のハック)
また、達成したいことは完全にStataで実行できると思いますが、それはハックです。ここに2つのプログラムがあります。1 つ目は単純にログ ファイルを開き、URL (最初の引数) を要求します。2 つ目は、そのログ ファイルを読み取り、正規表現を使用して、Stata がリダイレクトされた URL を見つけます。
capture program drop geturl
program define geturl
* pass short url as first argument (e.g. http://bit.ly/162VWRZ)
capture erase temp_log.txt
log using temp_log.txt
copy `1' temp_web_file
end
copy
コマンドが(意図的に)失敗するため、上記のプログラムは終了しません。また、それ自体は (意図的に) クリーンアップしません。そこで、何が起こったかを読み取る (そして URL リダイレクトを取得する) 次のプログラムを作成しました。
capture program drop longurl
program define longurl, rclass
* find the url in the log file created by geturl
capture log close
loc long_url = ""
file open urlfile using temp_log.txt , read
file read urlfile line
while r(eof) == 0 {
if regexm("`line'", "server says file permanently redirected to (.+)") == 1 {
loc long_url = regexs(1)
}
file read urlfile line
}
file close urlfile
return local url "`long_url'"
end
次のように使用できます。
geturl http://bit.ly/162VWRZ
longurl
di "The long url is: `r(url)'"
* The long url is: http://www.ciwati.it/2013/06/10/wdays/?utm_source=twitterfeed&
* > utm_medium=twitter
それらを次々に実行する必要があります。このソリューションを使用すると事態が悪化する可能性がありますが、探している URL は見つかります。別の方法として、短縮サービスに連絡して、データをうまく尋ねることを提案してもよろしいですか?
copy
Stata の誰かがこれを読んでいる場合、 HTTP 応答ヘッダー情報を返すとよいでしょう。これを完全に Stata で行うのは、少し特殊です。個人的には、この種のことには完全に Python を使用し、必要なものがすべて揃ったら、データの分析には Stata を使用します。