我希望能够在特定日期之后或之前从数据框中选择日期。例如,使用关于黄金价格的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)"))
答案 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")
得到你:
或者如果你想要ggplot
好看:
ggplot(subset(pGold,Date>"2012-01-01"), aes(x=Date,y=Value))+geom_line()
得到你:
答案 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'])
答案 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)"))