2017-08-06 3 views
0

現在、Rで予測アルゴリズムを作成しようとしていますが、txtファイルから時間データを抽出する際に問題があります。R - 時間データを使用してプロットする際に問題がある

私はそれを抽出し、次のコードでそれをプロットしてみたとき、私は現在、次のデータ

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 

は、どのように私はこれらの2つの問題を修正することができますか?

ありがとうございます。

答えて

2

多くの可能な解決策の1つです。
私はそれがあなたを助けることを願っています。

# 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") 

enter image description here

1

enter image description hereマルコは、あなたは、単に使用することになり、上記のことをデータフレームを使用して、あなたのggplot質問に答えるために:

ggplot(df, aes(x = date, y = x)) + geom_line(group = 1) 

あなたの唯一つのグループまたは1つのセットを持っているので、あなたはgeom_linegroup = 1のargを使用する必要があります。

私が指摘することの1つは、時系列データに不規則なピリオドがあることです。その時系列オブジェクトでは、そのことを考慮する必要があります。ほとんどの時系列パッケージには、データとプロットを処理する独自の特殊な関数があります。

関連する問題