R中的子设置时间超出时间序列

时间:2017-05-28 14:06:38

标签: r date subset

我从雅虎下载股票市场数据(下面的代码) - 对于上下文,起初我尝试使用getSymbols(^DJI),但我收到了可能与雅虎有关的错误消息......不同的问题。

重点是,一旦下载并导入R,我会将其按照足够接近时间序列的格式进行按摩,以便能够运行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'))

enter image description here

即使数据集实际上不是时间序列:

> is.ts(DJI)
[1] FALSE

当我试图找出道琼斯指数的最低收盘价时,就会出现问题。我可以做点像

> 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文件会有所帮助。

1 个答案:

答案 0 :(得分:0)

我不清楚你想要什么,但听起来你只想要约会?你提到xts不是一个选项(本来可以运行)

time(as.xts(DJI))[which.min(DJI$Close)] # POSIXct format
# [1] "1985-05-01 EDT" 

否则,简单的rownames + which.min会为您获取日期吗?

as.Date(rownames(DJI)[which.min(DJI$Close)]) # Date format
# [1] "1985-05-01"