2011-08-26 12 views
7

私は外部ソースから取得しているいくつかの等級をプロットしようとしています。日付の形式は次のように見に来て:ggplot2の日付データをプロットする際にエラーが発生しました - 欠落値TRUE/FALSEが必要

2011-08-23T17:07:05 

だから私はstrptime(date, "%FT%X")でそれを解析し、POSIXltを取得します。 「私はドン

> ggplot(data=grades, aes(date, grade, factor=subject)) + geom_line() 
Error in if (length(range) == 1 || diff(range) == 0) { : 
    missing value where TRUE/FALSE needed 

'data.frame': 15 obs. of 3 variables: 
$ date : POSIXlt, format: "2011-08-23 17:07:05" "2011-08-24 17:07:03" ... 
$ subject: Factor w/ 3 levels "AP Biology","US History",..: 1 1 1 2 2 2 2 ... 
$ grade : num 95.8 95.8 95.8 157.1 157.1 ... 

私はこのデータをプロットしてみてください:以下の構成とすることにより

    date subject grade 
1 2011-08-23 17:07:05 AP Biology 95.83 
2 2011-08-24 17:07:03 AP Biology 95.83 
3 2011-08-25 17:08:27 AP Biology 95.83 
4 2011-08-17 17:05:54 US History 157.14 
5 2011-08-18 17:05:24 US History 157.14 
6 2011-08-19 17:05:35 US History 157.14 
7 2011-08-22 17:06:25 US History 157.14 
8 2011-08-23 17:07:05 US History 157.14 
9 2011-08-24 17:07:03 US History 157.14 
10 2011-08-25 17:08:27 US History 157.14 
11 2011-08-19 17:05:35 Yearbook 0.00 
12 2011-08-22 17:06:25 Yearbook 0.00 
13 2011-08-23 17:07:05 Yearbook 100.00 
14 2011-08-24 17:07:03 Yearbook 100.00 
15 2011-08-25 17:08:27 Yearbook 100.00 

:私はこのようになり、完全なデータフレームで終わります私がここで間違っていることを知りません。私はこれを行うことにより、日付処理にそれを絞り込む:

ggplot(data=grades, 
     aes(seq(length(grades[,1])), 
      grade, color=subject)) + geom_line() 

...しかし、私は正しく取り扱う日付を行うのですか?

答えて

12

だけ時間がggplot2でサポートされています。クラスPOSIXctは、数値ベクトルとして1970年の初め(UTCタイムゾーン内)からの(符号付き)秒数を表します。クラスPOSIXltは、9つの要素(sec,minhourなど)を表すベクトルの名前付きリストです。

あなたは以下のように使用することができます。

grades$date <- as.POSIXct(grades$date) 
+0

へぇ、あなたは私がやったほぼ同時にほぼ同じものを掲載しました。私はあなたの努力のために多くをありがとう。 :) – Dustin

+0

うん、ちょうど39秒:) – rcs

+1

+1これを非常にはっきりと説明するため。私がその違いを理解するのは初めてです。それがヘルプファイルではっきりと分かっていれば! (おそらくそれはまだわかりません) – Andrie

2

私はこれを考え出したと思います。相違点はPOSIXctPOSIXltです。 POSIXltは部分的なカレンダー時間です。 POSIXctは、エポックからの秒数です。このデータを使用するためには、 `POSIXct

を返しstrptime、私はタイムスタンプを変換する必要があります。クラスPOSIXct

grades$date <- as.POSIXct(grades$date) 
関連する問題