我的数据格式如下:
my.XYZ $ datetime< - as.POSIXct(myXYZ $ datetime,format =“%Y-%m-%d%H:%M:%S”)
头(my.XYZ)
units datetime
1 1 0012-08-03 07:49:02
2 1 0012-08-05 12:27:21
3 1 0012-08-17 06:55:07
4 1 0012-08-20 10:56:49
5 1 0012-08-08 10:14:36
6 1 0012-08-20 16:12:26
我想创建一个时间序列图,x轴代表时间和日期以及y轴单位。这就是我到目前为止所做的:
> # make it a zoo object
> zoo.XYZ<- zoo(my.XYZ)
> # make it a ts
> ts.XYZ<- ts(zoo.XYZ)
> #plotting the ts object
> plot(ts.XYZ, plot.type="single")
>Warning messages:
> 1: In xy.coords(x = matrix(rep.int(tx, k), ncol = k), y = x, log = log) :
> NAs introduced by coercion
> 2: In xy.coords(x, y) : NAs introduced by coercion
这里我得到了正确的图表,但我的x轴不是按日期给出的,而是按变量的数字给出的(变量1,2,3 ... 430)
我也尝试了以下内容:
># plot as plot.ts
> plot.ts(ts.XYZ)
>Error in plot.window(...) : need finite 'ylim' values
>In addition: Warning messages:
>1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
>2: In min(x) : no non-missing arguments to min; returning Inf
>3: In max(x) : no non-missing arguments to max; returning -Inf
> plot.ts(ts.XYZ, xaxt = "n")
>Error in plot.window(...) : need finite 'ylim' values
>In addition: Warning messages:
>1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
>2: In min(x) : no non-missing arguments to min; returning Inf
>3: In max(x) : no non-missing arguments to max; returning -Inf
> axis(1, my.XYZ$datetime, format(my.XYZ$datetime, "%Y-%m-%d %H:%M:%S"), cex.axis = .7)
同样,图表是正确的,但x轴不是。
有人知道如何处理这个问题吗?
谢谢。
Giulia
答案 0 :(得分:2)
创建zoo()
对象时,需要使用order.by=
参数指定哪个列具有日期/时间值。尝试
zoo.XYZ <- zoo(my.XYZ[,-2], order.by=my.XYZ[,2])
此外,您的日期格式字符串可能不正确。我怀疑你的观察发生在公元12年。如果您只有两位数的年份将这些值解释为2012,则将字符串更改为%y-%m-%d %H:%M:%S"
。