在r中选择strptime的具体日期

时间:2013-04-03 08:05:39

标签: r time-series strptime

我有一个带标题的文本文件数据集

YEAR MONTH DAY value

从2010年6月6日至2012年7月14日每小时运行一次。我使用以下命令打开并绘制数据:

data=read.table('example.txt',header=T)
time = strptime(paste(data$DAY,data$MONTH,data$YEAR,sep="-"), format="%d-%m-%Y")
plot(time,data$value)

但是,绘制数据时,x轴仅显示2011年和2012年。enter image description here。如何保留2011年和2012年的标签,还可以添加一些特定月份,例如如果我想要3月,6月和九月?

我已在此链接上提供数据

https://dl.dropbox.com/u/107215263/example.txt

2 个答案:

答案 0 :(得分:5)

您需要使用函数axis.POSIXct来格式化和处理您的日期标签:

plot(time,data$value,xaxt="n") #Skip the x-axis here
axis.POSIXct(1, at=pretty(time), format="%B %Y")

enter image description here

要查看所有可能的格式,请参阅?strptime 您当然可以使用参数at来将刻度线放在任何位置,例如:

axis.POSIXct(1, at=seq(time[1],time[length(time)],"3 months"), 
             format="%B %Y")

enter image description here

答案 1 :(得分:0)

虽然这不能直接回答问题,但我建议您使用xts包进行任何时间序列分析。它使时间序列分析非常方便

require(xts)

DF <- read.table("https://dl.dropbox.com/u/107215263/example.txt", header = TRUE)
head(DF)
##   YEAR MONTH DAY    value
## 1 2010     6   1  95.3244
## 2 2010     6   2  95.3817
## 3 2010     6   3 100.1968
## 4 2010     6   4 103.8667
## 5 2010     6   5 104.5969
## 6 2010     6   6 107.2666

#Get Index for xts object which we will create in next step
DFINDEX <- ISOdate(DF$YEAR, DF$MONTH, DF$DAY)

#Create xts timeseries
DF.XTS <- .xts(x = DF$value, index = DFINDEX, tzone = "GMT")


head(DF.XTS)
##                         [,1]
## 2010-06-01 12:00:00  95.3244
## 2010-06-02 12:00:00  95.3817
## 2010-06-03 12:00:00 100.1968
## 2010-06-04 12:00:00 103.8667
## 2010-06-05 12:00:00 104.5969
## 2010-06-06 12:00:00 107.2666

#plot xts
plot(DF.XTS)

enter image description here