我目前正在尝试在R中编写预测算法,但我在从txt文件中提取时间数据时遇到问题。
我目前有一个包含以下数据的测试文本文件
x
1 2010-01-01
2 2010-07-02
3 2010-08-03
4 2011-02-04
5 2011-11-05
6 2011-12-06
7 2012-06-07
8 2012-08-30
9 2013-04-16
10 2013-03-18
11 2014-02-22
12 2014-01-27
13 2015-12-15
14 2015-09-28
15 2016-05-04
16 2017-11-07
17 2017-09-22
18 2017-04-04
当我提取它并尝试使用以下代码绘制它时:
library(forecast)
library(ggplot2)
Quantity <- c(read.table("....Path..../Quantity.txt"))
Time <- c(read.table("....Path..../Time.txt"))
x <- ts(as.Date(unlist(Time)))
y <- unlist(Quantity)
plot(x,y)
结果图表正确显示图表上的所有点,但时间标签除外(14500,16000和17500)。标签应该显示文件中的日期,但是我看到它的方式,它可能将数据视为数学总和(并且计算产生这些值)而不是日期。
我还有一个问题,即时间数据没有按时间顺序绘制,而是按文件的顺序绘制。
以下是来自其他文件的数据仅供参考:
x
1 5
2 3
3 8
4 4
5 0
6 5
7 2
8 7
9 4
10 2
11 6
12 8
13 4
14 7
15 8
16 9
17 4
18 6
我如何纠正这两个问题?
提前致谢。
答案 0 :(得分:2)
这是许多可能的解决方案之一 我希望它可以帮到你。
# A dataset with date and x values
# Important: the format of date is "character"
df <- structure(list(date = c("2010-01-01", "2010-07-02", "2010-08-03",
"2011-02-04", "2011-11-05", "2011-12-06", "2012-06-07", "2012-08-30",
"2013-04-16", "2013-03-18", "2014-02-22", "2014-01-27", "2015-12-15",
"2015-09-28", "2016-05-04", "2017-11-07", "2017-09-22", "2017-04-04"
), x = c(5L, 3L, 8L, 4L, 0L, 5L, 2L, 7L, 4L, 2L, 6L, 8L, 4L,
7L, 8L, 9L, 4L, 6L)), .Names = c("date", "x"), row.names = c(NA,
-18L), class = "data.frame")
str(df)
# Create a x vector with dates as rownames
x <- as.matrix(df$x)
rownames(x) <- df$date
# Convert in a xts object
library(xts)
x <- as.xts(x)
# Plot the xts object
plot(x, grid.col="white")
答案 1 :(得分:1)