【发布时间】:2020-12-14 03:15:37
【问题描述】:
我正在尝试使用我在 Excel 中创建的代码在 R 中创建一个循环。 我正在尝试从 Yahoo Finance 收集股票数据,想法是 R 将从 Excel 文件中读取股票名称,然后从 Yahoo Finance 收集并创建图表。
在数据框“Stocks”中,不同列中列出了 10 只不同的股票,我想运行一个循环,以便获得 10 个不同的图表。这是我用来从数据集中的第一只股票创建图表的公式。
`Stocks %>%
ggplot(aes(x=Date, y = NOVO.B.CO.Close)) +
geom_line(col = "darkgreen") +
geom_point(col = "darkgreen") +
theme_gray() +
ggtitle("Novo Nordiske B") `
【问题讨论】:
-
很多问题都回答了这个问题。用于导入数据from excel。直接从yahoo in R 下载数据。要绘制多个证券,请创建一个
data.frame和tickerclose等,并使用ticker为ggplot(data = df, aes(x = time, y = close, col = ticker)) + geom_line() + geom_point() + theme_gray()着色。 -
不确定我是否理解您的回复。我已经导入了excel表格,我需要的所有数据都在数据框“Stocks”下。我知道如何从雅虎下载数据,因为我已经能够创建一个包含过去 7 天收盘价的图表。问题只是创建一个for循环,所以我不需要将相同的公式输入10次。
-
啊,我有点误解了你的问题。将数据以
long格式用于ggplot 通常是有益的,因为在aes中使用col = column将自动处理着色或使用facet_wrap/facet_grid可以帮助将绘图拆分为子绘图。对于单个地块的自动化过程,您可能会从问题和我对this question 的回答中得到一些启发,这给出了一个有点简单的解决方案。 -
对于单个图:
base_plot <- ggplot(Stocks, aes(x = Date)) + theme_gray(); for(i in seq_along(tickers))base_plot <- base_plot + geom_line(aes_string(x = tickers[i]), col = colors[i]) + geom_point(aes_string(x = tickers[i]), col = colors[i])其中ticker是列名,colors是颜色向量。对于多个图,创建一个列表并将每个图存储到一个向量中,并在上面链接的问题中使用我的答案。
标签: r excel for-loop yahoo-finance stock-data