环路用于改变日期格式和生成图形(Loop for changing date format and

2019-10-30 02:05发布

我想通过一些循环csv文件,为了改变日期变量的格式,并生成图表每一个标题,简直是各自的文件的名称。

这里是一个示例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

该文件是内部"I:\Games CSVs"目录,他们都在csv格式。 我已经确保了在所有文件中的变量名是相同的。

我想利用每一个文件,转换scrapedate从字符串到日期格式。 然后我要绘制由四个变量表示的四行averagethpercentilev5v6和在y轴, ScrapeDate

到目前为止,基于谷歌的搜索,我想下面的代码:

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 ,我没有看到任何图形,它只是显示在我的窗口中end of do file 。 我没有看到该图!

我希望我的代码是没有错的或任何东西,因为在左侧面板上,在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

Answer 1:

假设你有以下的玩具数据集:

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

对我来说,以下工作:

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和塔塔将做休息。

我已经在你的原代码所做的所有更改以粗体表示。



文章来源: Loop for changing date format and generating graphs