Stata 用于更改日期格式和生成图形的循环

Stata 用于更改日期格式和生成图形的循环,stata,stata-macros,Stata,Stata Macros,我想循环浏览一些csv文件,以更改日期变量的格式,并生成每个图的标题都是相应文件的名称 以下是使用dataex创建的csv文件之一的示例: clear input str32 eventname str10 scrapedate float(average thpercentile v5 v6) "EventName" "2015-12-15" 136.9255 83.2 104.875 148.75 "EventName" "2015-12-16" 130.4555 7

我想循环浏览一些
csv
文件,以更改日期变量的格式,并生成每个图的标题都是相应文件的名称

以下是使用
dataex
创建的
csv
文件之一的示例:

clear
input str32 eventname str10 scrapedate float(average thpercentile v5 v6)
"EventName" "2015-12-15"  136.9255     83.2 104.875    148.75
"EventName" "2015-12-16"  130.4555    78.55      99    138.22
"EventName" "2015-12-17" 123.66705     72.7   90.25     131.2
"EventName" "2015-12-18" 116.45757   64.855   78.55     119.5
"EventName" "2015-12-19" 108.63446 60.56333    72.7 119.07333
"EventName" "2015-12-20"  94.97125    55.15   69.77    112.48
end
这些文件位于
“I:\Games CSVs”
目录中,它们都是
csv
格式。我已经确保所有文件中的变量名都是相同的

我想获取每个文件,将
scrapdate
从字符串转换为日期格式。然后,我想绘制四条线,由四个变量表示,
average
thpercentile
v5
v6
,并在y轴上,
scrapdate

到目前为止,基于谷歌搜索,我尝试了以下代码:

local files : dir "I:\Games CSVs" files "*.csv"

cd "I:\Games CSVs"

foreach file in `files' {
    insheet using `file', comma clear

    /* Convert string to date format */
    gen ScrapeDate = date(scrapedate, "YMD") 
    format ScrapeDate %td #Convert string to date format

    /* X Axis: price, Y Axis: ScrapeDate; Plotting, averages, 25th, 50th and 75th percentile  */
    line average thpercentile v5 v6 ScrapeDate, legend(size(medsmall))  
}
上述代码包含在
do
文件中。问题是当我这样做时,
File->do..->filename.do
,我看不到任何图形,它只是在我的窗口中显示为do文件的结尾。我看不到图表

我希望我的代码没有错,因为在左侧面板上,
do“path/filename.do”
显示为红色。我已经删除了
do
文件中的所有空行,它没有分号,与谷歌搜索答案的分号相反(答案有分号)

我希望能够访问图表!但是它们存放在哪里呢

仅使用一个包含以下代码的文件,我就能够在某种程度上实现我想要的:

insheet using "I:\Games CSVs\oneofthecsvfiles.csv"
gen ScrapeDate = date(scrapedate, "YMD")
format ScrapeDate %td
line average thpercentile v5 v6 ScrapeDate, legend(size(medsmall))
最后,上述代码将日期变量转换为数字,但将格式从原来的
2015-12-17
更改为
17dec2015


是否有办法将其设置为
2015/12/17
2015-12-17

假设您有以下玩具数据集:

local foodir // INSERT YOUR DIRECTORY PATH HERE clear input str32 eventname str10 scrapedate float(average thpercentile v5 v6) "EventName" "2015-12-15" 136.9255 83.2 104.875 148.75 "EventName" "2015-12-16" 130.4555 78.55 99 138.22 "EventName" "2015-12-17" 123.66705 72.7 90.25 131.2 "EventName" "2015-12-18" 116.45757 64.855 78.55 119.5 "EventName" "2015-12-19" 108.63446 60.56333 72.7 119.07333 "EventName" "2015-12-20" 94.97125 55.15 69.77 112.48 end export delimited using "`foodir'one", replace clear input str32 eventname str10 scrapedate float(average thpercentile v5 v6) "EventName" "2014-12-15" 236.9255 83.2 104.875 148.75 "EventName" "2014-12-16" 230.4555 78.55 99 138.22 "EventName" "2014-12-17" 223.66705 72.7 90.25 131.2 "EventName" "2014-12-18" 216.45757 64.855 78.55 119.5 "EventName" "2014-12-19" 208.63446 60.56333 72.7 119.07333 "EventName" "2014-12-20" 194.97125 55.15 69.77 112.48 end export delimited using "`foodir'two", replace clear input str32 eventname str10 scrapedate float(average thpercentile v5 v6) "EventName" "2013-12-15" 336.9255 83.2 104.875 148.75 "EventName" "2013-12-16" 330.4555 78.55 99 138.22 "EventName" "2013-12-17" 323.66705 72.7 90.25 131.2 "EventName" "2013-12-18" 316.45757 64.855 78.55 119.5 "EventName" "2013-12-19" 308.63446 60.56333 72.7 119.07333 "EventName" "2013-12-20" 294.97125 55.15 69.77 112.48 end 本地foodir//在此处插入目录路径 清楚的 输入str32 eventname str10 scrapdate float(平均百分位数v5 v6) “事件名称”“2015-12-15”136.9255 83.2 104.875 148.75 “事件名称”“2015-12-16”130.4555 78.55 99 138.22 “事件名称”“2015-12-17”123.66705 72.7 90.25 131.2 “事件名称”“2015-12-18”116.45757 64.855 78.55 119.5 “事件名称”“2015-12-19”108.63446 60.56333 72.7119.07333 “事件名称”“2015-12-20”94.97125 55.15 69.77 112.48 结束 使用“`foodir'one”分隔的导出,替换 清楚的 输入str32 eventname str10 scrapdate float(平均百分位数v5 v6) “事件名称”“2014-12-15”236.9255 83.2 104.875 148.75 “事件名称”“2014-12-16”230.4555 78.55 99 138.22 “事件名称”“2014-12-17”223.66705 72.7 90.25 131.2 “事件名称”“2014-12-18”216.45757 64.855 78.55 119.5 “事件名称”“2014-12-19”208.63446 60.56333 72.7119.07333 “事件名称”“2014-12-20”194.97125 55.15 69.77 112.48 结束 使用“`foodir'two”分隔的导出,替换 清楚的 输入str32 eventname str10 scrapdate float(平均百分位数v5 v6) “事件名称”“2013-12-15”336.9255 83.2 104.875 148.75 “事件名称”“2013-12-16”330.4555 78.55 99 138.22 “事件名称”“2013-12-17”323.66705 72.7 90.25 131.2 “事件名称”“2013-12-18”316.45757 64.855 78.55 119.5 “事件名称”“2013-12-19”308.63446 60.56333 72.7119.07333 “事件名称”“2013-12-20”294.97125 55.15 69.77 112.48 结束 以下是我的作品:

local foodir // INSERT YOUR DIRECTORY PATH HERE local files : dir "`foodir'" files "*.csv" cd "`foodir'" local i = 0 foreach file of local files { local ++i insheet using "`file'", comma clear generate ScrapeDate = daily(scrapedate, "YMD") format ScrapeDate %tdCCYY-NN-DD line average thpercentile v5 v6 ScrapeDate, name("graph`i'", replace) title("`file'") /// legend(size(medsmall)) } 本地foodir//在此处插入目录路径 本地文件:dir“`foodir'”files“*.csv” cd“`foodir'” 局部i=0 本地文件的foreach文件{ 本地++i 在图纸中使用“`文件'”,逗号清除 生成ScrapDate=每日(ScrapDate,“YMD”) 格式日期%tdCCYY NN DD 行平均百分位数日期、名称(“图形'i',替换)标题('file'))/// 图例(尺寸(小型)) } 只需在本地宏
foodir
中插入full路径,Stata将完成其余操作


我在您的原始代码中所做的所有更改都以粗体显示。

假设您有以下玩具数据集:

local foodir // INSERT YOUR DIRECTORY PATH HERE clear input str32 eventname str10 scrapedate float(average thpercentile v5 v6) "EventName" "2015-12-15" 136.9255 83.2 104.875 148.75 "EventName" "2015-12-16" 130.4555 78.55 99 138.22 "EventName" "2015-12-17" 123.66705 72.7 90.25 131.2 "EventName" "2015-12-18" 116.45757 64.855 78.55 119.5 "EventName" "2015-12-19" 108.63446 60.56333 72.7 119.07333 "EventName" "2015-12-20" 94.97125 55.15 69.77 112.48 end export delimited using "`foodir'one", replace clear input str32 eventname str10 scrapedate float(average thpercentile v5 v6) "EventName" "2014-12-15" 236.9255 83.2 104.875 148.75 "EventName" "2014-12-16" 230.4555 78.55 99 138.22 "EventName" "2014-12-17" 223.66705 72.7 90.25 131.2 "EventName" "2014-12-18" 216.45757 64.855 78.55 119.5 "EventName" "2014-12-19" 208.63446 60.56333 72.7 119.07333 "EventName" "2014-12-20" 194.97125 55.15 69.77 112.48 end export delimited using "`foodir'two", replace clear input str32 eventname str10 scrapedate float(average thpercentile v5 v6) "EventName" "2013-12-15" 336.9255 83.2 104.875 148.75 "EventName" "2013-12-16" 330.4555 78.55 99 138.22 "EventName" "2013-12-17" 323.66705 72.7 90.25 131.2 "EventName" "2013-12-18" 316.45757 64.855 78.55 119.5 "EventName" "2013-12-19" 308.63446 60.56333 72.7 119.07333 "EventName" "2013-12-20" 294.97125 55.15 69.77 112.48 end 本地foodir//在此处插入目录路径 清楚的 输入str32 eventname str10 scrapdate float(平均百分位数v5 v6) “事件名称”“2015-12-15”136.9255 83.2 104.875 148.75 “事件名称”“2015-12-16”130.4555 78.55 99 138.22 “事件名称”“2015-12-17”123.66705 72.7 90.25 131.2 “事件名称”“2015-12-18”116.45757 64.855 78.55 119.5 “事件名称”“2015-12-19”108.63446 60.56333 72.7119.07333 “事件名称”“2015-12-20”94.97125 55.15 69.77 112.48 结束 使用“`foodir'one”分隔的导出,替换 清楚的 输入str32 eventname str10 scrapdate float(平均百分位数v5 v6) “事件名称”“2014-12-15”236.9255 83.2 104.875 148.75 “事件名称”“2014-12-16”230.4555 78.55 99 138.22 “事件名称”“2014-12-17”223.66705 72.7 90.25 131.2 “事件名称”“2014-12-18”216.45757 64.855 78.55 119.5 “事件名称”“2014-12-19”208.63446 60.56333 72.7119.07333 “事件名称”“2014-12-20”194.97125 55.15 69.77 112.48 结束 使用“`foodir'two”分隔的导出,替换 清楚的 输入str32 eventname str10 scrapdate float(平均百分位数v5 v6) “事件名称”“2013-12-15”336.9255 83.2 104.875 148.75 “事件名称”“2013-12-16”330.4555 78.55 99 138.22 “事件名称”“2013-12-17”323.66705 72.7 90.25 131.2 “事件名称”“2013-12-18”316.45757 64.855 78.55 119.5 “事件名称”“2013-12-19”308.63446 60.56333 72.7119.07333 “事件名称”“2013-12-20”294.97125 55.15 69.77 112.48 结束 以下是我的作品:

local foodir // INSERT YOUR DIRECTORY PATH HERE local files : dir "`foodir'" files "*.csv" cd "`foodir'" local i = 0 foreach file of local files { local ++i insheet using "`file'", comma clear generate ScrapeDate = daily(scrapedate, "YMD") format ScrapeDate %tdCCYY-NN-DD line average thpercentile v5 v6 ScrapeDate, name("graph`i'", replace) title("`file'") /// legend(size(medsmall)) } 本地foodir//在此处插入目录路径 本地文件:dir“`foodir'”files“*.csv” cd“`foodir'” 局部i=0 本地文件的foreach文件{ 本地++i 在图纸中使用“`文件'”,逗号清除 生成ScrapDate=每日(ScrapDate,“YMD”) 格式日期%tdCCYY NN DD 行平均百分位数日期、名称(“gra