我有一個日期列的一些數據:更改日期格式
這裏的格式爲月年。然而,這一欄是一個因子格式,我需要它作爲日期。
> 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")
我有一個日期列的一些數據:更改日期格式
這裏的格式爲月年。然而,這一欄是一個因子格式,我需要它作爲日期。
> 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")
你沒有日期。你有一個因子變量,因爲str()
告訴你。
更一般地,看看stringsAsFactors=FALSE
,作爲數據讀取的選項(包括數據庫)或全局選項。
手頭的問題:結合
as.Date(paste0(as.character(date$date), "-01"), "%m-%Y-%d")
,你還需要一天的時間來創建一個有效的日期。
你可以考慮尋找到具有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"
我不認爲這裏需要'as.character'。 '粘貼'*應該*爲你照顧。 – A5C1D2H2I1M1N2O1R2T1
好的。通常我不需要添加「日」。一般來說,我們需要用'as.character()'來轉換因素,但是在這裏它會帶來額外的毛病。 –