2011-08-26 2 views
7

외부 소스에서 가져온 성적을 플로팅하려고합니다. 날짜 형식은 다음과 같이보고에서 제공 : ggplot2에서 데이터를 플로팅하는 중에 발생하는 오류 - 누락 된 값 (TRUE/FALSE가 필요한 경우)

2011-08-23T17:07:05 

그래서 내가 strptime(date, "%FT%X") 그것을 분석하고 POSIXlt를 얻을. 다음과 같은 구조

    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 

: I는 다음과 같습니다 완전한 데이터 프레임으로 끝낼

'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 ... 

나는이 데이터 플롯 할 때 :

> 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 

내가 돈을 ' 내가 여기서 잘못하고있는 것을 안다. 이 작업을 수행하여 날짜 처리 범위를 좁혔습니다.

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

... 어떻게 날짜를 올바르게 처리합니까?

답변

12

만 시간은 ggplot2에서 지원됩니다. 클래스 POSIXct은 1970 년 초 (UTC 시간대)부터 숫자 벡터로 표시된 (서명 된) 초 수를 나타냅니다. 클래스 POSIXlt은 9 개의 요소 (sec, min, hour 등)를 나타내는 벡터의 명명 된 목록입니다.

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) 
관련 문제