我从雅虎(下面的代码)下载了股票市场数据 - 对于上下文,起初我尝试了getSymbols(^DJI)
,但我收到了与雅虎有关的错误消息......不同的问题。R中的时间序列中的子设置时间
的一点是,一旦下载,导入R,I按摩它到足够接近的时间序列的格式,以能够运行chartSeries(DJI)
:
require(RCurl)
require(foreign)
x <- getURL("https://raw.githubusercontent.com/RInterested/datasets/gh-pages/%5EDJI.csv")
DJI <- read.csv(text = x, sep =",")
DJI$Date <- as.Date(DJI$Date, format = "%m/%d/%Y") # Formatting Date as.Date
rownames(DJI) <- DJI$Date # Assigning Date to row names
DJI$Date <- NULL # Removing the Date column
chartSeries(DJI, type="auto", theme=chartTheme('white'))
即使数据集不是一个真正的时间序列:
> is.ts(DJI)
[1] FALSE
问题出现时,我试图找出日期,例如最小的clo唱出道指的价值。我可以这样做
> DJI[DJI$Close == min(DJI$Close),]
Open High Low Close Adj.Close Volume
1985-05-01 1257.18 1262.81 1239.07 1242.05 1242.05 10050000
产生整个行,包括行名称(1985-05-01
),这是我想要的只是一部分。不过,如果我坚持刚开的实际日期,我必须兼顾包含日期,第二个数据集的一列:
require(RCurl)
require(foreign)
x <- getURL("https://raw.githubusercontent.com/RInterested/datasets/gh-pages/%5EDJI.csv")
DJI <- read.csv(text = x, sep =",")
DJI$Date <- as.Date(DJI$Date, format = "%m/%d/%Y") # Formatting Date as.Date
rownames(DJI) <- DJI$Date # Assigning Date to row names
DJI.raw <- DJI # Second dataset for future subsetting
DJI$Date <- NULL # Removing the Date column
这确实让我跑
> DJI.raw$Date[DJI.raw$Close == min(DJI.raw$Close)]
[1] "1985-05-01"
此外,我不认为将数据集转换为.xts
文件会有所帮助。
请注意,当您将日期分配给rownames时,它们会变回字符。这就是说,如果你不想在data.frame中包含日期的另一列,并且日期是字符,那么你可以简单地使用'rownames(DJI)[DJI $ Close == min(DJI $关闭)]' – digEmAll
@digEmAll我假设一个时间序列需要行名称作为日期。这不正确吗?另外,如果我将日期列保留在数据集内,则无法运行'chartSeries()'... – Toni
是的,这是可能的(我不知道chartSeries函数),但这并不意味着您不能拥有在data.frame anyaway中将一列列传递给chartSeries ...例如'chartSeries(DJI [, - 1],type =“auto”,theme = chartTheme('white'))'(-1表示我们没有将位置1的列传递给chartSeries,当然如果Date列在位置2,你应该通过-2等等......) – digEmAll