2014-02-14 2 views
0

날씨 데이터를 가져 오지만 시간 소인이 다른 열에 나뉘어 있습니다. 나는이 칼럼에 가입하고 그 중에서 posix 객체를 만들고 싶습니다. 나는 같은과 함께 얻으려고 것입니다 "SS : MM YYYY-MM-DD HH", 시각적으로일련 번호를 R의 문자 표로 변환

datenum <- c() 
for (i in 1:dim(weather)[1]){ 

date_string <- paste0(weather$Year.UTC[i],'-',weather$Month.UTC[i],'-',weather$Day.UTC[i],'-',weather$Hour.UTC[i]) # different columns of data 
# for i = 1, date_string = "2012-12-31-23" 

datenum[i] <- as.POSIXct(date_string, format="%Y-%m-%d-%H",tz="GMT", origin = "1960-01-01") 
# for i = 1, datenum[1] = 1356994800 (numeric) 
} 

as.Date(datenum[1], origin = "1960-01-01") 
# Gives character = "7285-07-27" 

내가 형태로 문자열을보고 싶다, 내가 바로 그 일을하고 있는지 확인합니다. 날짜. 일련 번호로 변환하고 문자로 되돌릴 때 원점은 동일하지만 날짜가 완전히 잘못되었습니다. 내가 뭘 잘못하고 있니?

답변

1

왜 그렇게 복잡합니까?

weather <- data.frame(Year.UTC=c(2012, 2013), 
         Month.UTC=c(1,2), 
         Day.UTC=c(1,2), 
         Hour.UTC=c(22,23)) 
weather <- within(weather, datetime <- 
       as.POSIXct(paste(Year.UTC, Month.UTC, Day.UTC, Hour.UTC, sep="-"), 
         format="%Y-%m-%d-%H", tz="UTC")) 

# Year.UTC Month.UTC Day.UTC Hour.UTC   datetime 
#1  2012   1  1  22 2012-01-01 22:00:00 
#2  2013   2  2  23 2013-02-02 23:00:00 

위에서 보았 듯이 루프는 필요 없습니다.

+0

감사합니다. 그건 잘 작동합니다. 내부 기능에 대해서는 몰랐습니다. 나는 나의 예가 같은 기원을 가진 그릇된 결과를내는 것은 여전히 ​​흥미 롭다. – fifthace

+0

그 이유는'POSIXct'는 내부적으로 초로 표현되고'Date'는 일로 표현되기 때문입니다. – Roland

관련 문제