갈루아의 반서재

728x90

Data Formats

데이터세트내의 일부 변수의 포맷을 바꿔야 할 경우도 있다. 

먼저 각각의 변수의 데이터 타입부터 확인해야 한다. 

> sapply(ds,class)

$date

[1] "Date"


$location

[1] "factor"


$min_temp

[1] "numeric"


$max_temp

[1] "numeric"


$rainfall

[1] "numeric"


$evaporation

[1] "numeric"

lubridate를 이용하여 date 변수의 포맷을 다른 것으로 바꿔보자.

> library(lubridate)

> head(ds$date)

[1] "2007-11-01" "2007-11-02" "2007-11-03" "2007-11-04" "2007-11-05"

[6] "2007-11-06"

> ds$date <- ymd(as.character(ds$date))

Error in gsub("+", "*", fixed = T, gsub(">", "_e>", num)) : invalid multibyte string at '<ec><98><a4>?<84>|<ec>삤<ed>썑)(?![[:alpha:]]))|((?<H_s_e>2[0-4]|[01]?\d)\D+(?<M_s_e>[0-5]?\d)\D+((?<OS_s_S_e>[0-5]?\d\.\d+)|(?<S_s_e>[0-6]?\d))))'

에러 발생!!! 이 경우 우선 아래와 같이 as.POSIXct 가 정상적으로 작동하는지 확인해본다.

> as.POSIXct("07-31-2014",format="%m-%d-%Y",tz="UTC")

[1] "2014-07-31 UTC"

만약 위와 같이 정상적으로 작동한다면, 아래와 같이 Sys.setlocale()을 이용하여 변경한 후, 포맷변환을 시도한다.

> Sys.setlocale("LC_TIME", "usa") 

[1] "English_United States.1252"

> ds$date <- ymd(as.character(ds$date))

> head(ds$date)

[1] "2007-11-01 UTC" "2007-11-02 UTC" "2007-11-03 UTC" "2007-11-04 UTC"

[5] "2007-11-05 UTC" "2007-11-06 UTC"

> sapply(ds, class)

$date

[1] "POSIXct" "POSIXt" 



728x90