2013-01-24 4 views
0

플롯에 ggplot을 사용하고 있습니다. 내가 문제를 내놓았다 코드는 다음과 같습니다ggplot2 및 strptime in R

require(ggplot2) 
require(reshape2) 

df <- data.frame(HMn25_30$avg,for30$cgsbi_1,dt_hmn$dt) 
names(df)[1]='WSN 25' 
names(df)[2]='MetoSwiss Forecast' 
df.m <- melt(df, names(df)[3], names(df)[1:2]) 
df.m$dt_hmn.dt <- strptime(as.character(df.m$dt_hmn.dt), format = "%m/%d/%Y %H:%M:%S") 
p <- ggplot(df.m, aes(x = dt_hmn.dt, y = value, group = variable, color = variable)) 
size=14),axis.text.y = element_text(angle=00, vjust=0.5, size=30)) 
p 

데이터 :

> head(df.m) 
     dt_hmn.dt variable value 
1 9/29/2007 23:00 WSN 25 0.280 
2 9/30/2007 0:00 WSN 25 0.208 
3 9/30/2007 1:00 WSN 25 -0.264 
4 9/30/2007 2:00 WSN 25 -0.480 
5 9/30/2007 3:00 WSN 25 -0.708 
6 9/30/2007 4:00 WSN 25 -0.714 

str(df.m) 
'data.frame': 50 obs. of 3 variables: 
$ dt_hmn.dt: Factor w/ 25 levels "9/29/2007 23:00",..: 1 2 3 14 19 20 21 22 23 24 ... 
$ variable : Factor w/ 2 levels "WSN 25","MetoSwiss Forecast": 1 1 1 1 1 1 1 1 1 1 ... 
$ value : num 0.28 0.208 -0.264 -0.48 -0.708 -0.714 -0.498 -0.216 0.126 0.574 ... 

나는 모든 TIME_DATE 열이 "NA"로 변경됩니다 strptime를 사용하려면

.

Plz이 문제에 대해 안내하겠습니다.

답변

2

데이터에 가지고 있지 않으므로 :%S을 사용할 수 없습니다. 이것을 시도하십시오 :

strptime(dt$dt_hmn.dt, "%m/%d/%Y %H:%M") 

# [1] "2007-09-29 23:00:00" "2007-09-30 00:00:00" "2007-09-30 01:00:00" 
#  "2007-09-30 02:00:00" "2007-09-30 03:00:00" "2007-09-30 04:00:00" 
+0

네, 플롯 그리드는 6 시간마다 작동합니다. 3 ~ 4 시간마다 짧게 할 수 있습니까? –

1

타임 스탬프에 초가있는 것 같지 않습니다. 따라서 다음을 사용해야합니다.

df.m$dt_hmn.dt <- strptime(as.character(df.m$dt_hmn.dt), format = "%m/%d/%Y %H:%M") 
+1

네, 맞습니다! 도움말 페이지에서는 _strptime이 문자 벡터를 클래스 "POSIXlt"로 변환합니다. 입력 'x'는 as.character_로 먼저 변환됩니다. 그래서 당신의 대답은 나아졌습니다. – juba

+0

동일하지만, 네,하지만 더 깨끗합니다. :) – juba