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