下面是我从csv
创建的dataex
文件之一,作为可重复的示例:
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
由于对我的previous question的回答,我能够修改我的代码以遍历目录"I:\Games CSVs\"
并使用以下命令读取每个csv
文件:
insheet using "`file'", comma clear
然后创建一个新变量,以将数据格式更改为所需的格式并生成折线图。
这是我的代码:
local foodir "I:\Games CSVs\"
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 %tdYY-NN-DD
line average thpercentile v5 v6 ScrapeDate, name("graph`i'", replace) ///
scale(*.7) ///
local filename = substr("`file'", 1, strlen("`file'")-4) ///
title(filename) ///
ytitle("Price in US$") ///
legend(size(small))
}
有问题的行如下:
local filename = substr("`file'", 1, strlen("`file'")-4)`
title(filename)
我也尝试过:
generate filename = substr("`file'", 1, strlen("`file'")-4)`
title(filename)
我遇到以下问题:
filename.csv
,我希望删除后缀。 所有图表(我有52张)都在一张一张地闪烁。如果我可以将它们全部保存到一个文件夹(I:\Graphs
)中,并且filename
与filename.csv
相同,而不是在这里另存为{{1} }或filename.png
或任何我可以打开的格式。
我已经阅读了文档。我相信filename.jpeg
会替换图形(如果存在的话),并且由于我要遍历目录,因此每次都将替换图形,因为我没有更改图形的名称。
答案 0 :(得分:2)
在使用前,您需要正确定义本地宏filename
。您还需要在saving()
命令中使用nodraw
和line
选项:
local foodir "I:\Games CSVs\" local foosavedir "I:\Graphs\" 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 %tdYY-NN-DD local filename = substr("`file'", 1, strrpos("`file'", ".")-1) line average thpercentile v5 v6 ScrapeDate, name("graph`i'", replace) /// saving("`foosavedir'`filename'.gph", replace) nodraw scale(*.7) title("`filename'") /// ytitle("Price in US$") legend(size(small)) }
请注意,通过这种方式,文件将以Stata的gph
本机格式保存,这始终是最好的做法,因此以后可以根据需要进行编辑。
如果您还希望它们使用不同的图形格式,例如png
,则需要在line
命令之后导出它们:
graph export "`foosavedir'`filename'.png", name("graph`i'")
在这种情况下,您必须未在nodraw
中指定line
选项。
如果指定了选项replace
,并且已保存/导出的文件的名称与现有文件冲突,则将替换图形。如果文件名是唯一的,那么您应该不会遇到这个问题。