选择特定日期后的数据

时间:2014-03-21 08:55:38

标签: r date

我希望能够在特定日期之后或之前从数据框中选择日期。例如,使用关于黄金价格的quandl数据。

pGold <- read.csv('http://www.quandl.com/api/v1/datasets/BUNDESBANK/BBK01_WT5511.csv?&trim_start=1968-04-01&trim_end=2014-01-08&sort_order=desc', colClasses=c('Date'='Date'))

pGold$asDate <- as.Date(pGold$Date)

head(pGold)
        Date   Value
1 2014-01-08 1226.50
2 2014-01-07 1237.50
3 2014-01-06 1238.00
4 2014-01-03 1232.25
5 2014-01-02 1219.75
6 2013-12-31 1201.50

plot(pGold[pGold$Date>"2012-01-01",], type="l", main="Price of Gold (USD)"))

enter image description here

4 个答案:

答案 0 :(得分:6)

你几乎已经完成了它。

pGold <- read.csv('http://www.quandl.com/api/v1/datasets/BUNDESBANK/BBK01_WT5511.csv?&trim_start=1968-04-01&trim_end=2014-01-08&sort_order=desc', colClasses=c('Date'='Date'))
plot(subset(pGold,Date>"2012-01-01"),type="l")

得到你:

enter image description here

或者如果你想要ggplot好看:

ggplot(subset(pGold,Date>"2012-01-01"), aes(x=Date,y=Value))+geom_line()

得到你:

enter image description here

答案 1 :(得分:3)

我建议使用时间序列,使用xts包。它提供了非常简单的子集功能,如下所示。

require(xts)

Gold <- xts(pGold[, 2], pGold[, 1])

Gold["2014"]
##               [,1]
## 2014-01-02 1219.75
## 2014-01-03 1232.25
## 2014-01-06 1238.00
## 2014-01-07 1237.50
## 2014-01-08 1226.50

plot(Gold['201310/201312'])

enter image description here

答案 2 :(得分:2)

您可以比较日期

data <- as.Date("2013-10-1")
data1 <- as.Date("2013-08-22")
data1 > data
## [1] FALSE
data1 < data
## [1] TRUE
data
## [1] "2013-10-01"
data1
## [1] "2013-08-22"

答案 3 :(得分:0)

这就是我想出的。但它有点笨重。

将日期转换为字符串。

pGold$Sdate <- do.call(rbind, lapply(pGold$Date,toString))

转入标有年,月和日的列。

pGold[c("Year", "Month", "Day")] <- 
    do.call(rbind, lapply((strsplit(pGold$Sdate, split="\\-")),as.numeric))

绘制数据。

with(pGold[pGold$Year>=2012,], 
    plot(Date,Value, type="l", main="Price of Gold (USD)"))