2013-11-20 254 views
0

我有一個日期列的一些數據:更改日期格式

enter image description here

這裏的格式爲月年。然而,這一欄是一個因子格式,我需要它作爲日期。

> str(data$date) 
Factor w/ 211 levels "01-1994","01-1996",..: 88 157 125 137 139 106 11 204 45 173 ... 

我試圖改變它,但結果是NA的列。錯誤在哪裏?

data$date <- as.Date(data$date, format = "%m-%Y") 

enter image description here

回答

1

你沒有日期。你有一個因子變量,因爲str()告訴你。

更一般地,看看stringsAsFactors=FALSE,作爲數據讀取的選項(包括數據庫)或全局選項。

手頭的問題:結合

as.Date(paste0(as.character(date$date), "-01"), "%m-%Y-%d") 

,你還需要一天的時間來創建一個有效的日期。

+0

我不認爲這裏需要'as.character'。 '粘貼'*應該*爲你照顧。 – A5C1D2H2I1M1N2O1R2T1

+0

好的。通常我不需要添加「日」。一般來說,我們需要用'as.character()'來轉換因素,但是在這裏它會帶來額外的毛病。 –

3

你可以考慮尋找到具有yearmon格式的 「動物園」 包:

## Some sample data 
test <- data.frame(date = c("05-2010", "09-2007", "01-2013")) 
str(test) 
# 'data.frame': 3 obs. of 1 variable: 
# $ date: Factor w/ 3 levels "01-2013","05-2010",..: 2 3 1 

轉換爲yearmon

library(zoo) 
as.yearmon(test$date, format="%m-%Y") 
# [1] "May 2010" "Sep 2007" "Jan 2013" 

FYI:這是可能的包裹as.yearmon在如果您需要正規的日期格式,請致電as.Date

as.Date(as.yearmon(test$date, format="%m-%Y")) 
# [1] "2010-05-01" "2007-09-01" "2013-01-01"