我有一個YYYY-MM類型的日期數據框,我試圖將它轉換爲類日期。R將YYYY-MM因子轉換爲日期
我想:
Date <- c("2015-08","2015-09","2015-08")
Val <- c(1,2,3)
df <- data.frame(Date,Val)
df[,1] <- as.POSIXct(as.character(df[,1]), format = "%Y-%m")
df
但是,這是行不通的。我會很感激你的幫助。
我有一個YYYY-MM類型的日期數據框,我試圖將它轉換爲類日期。R將YYYY-MM因子轉換爲日期
我想:
Date <- c("2015-08","2015-09","2015-08")
Val <- c(1,2,3)
df <- data.frame(Date,Val)
df[,1] <- as.POSIXct(as.character(df[,1]), format = "%Y-%m")
df
但是,這是行不通的。我會很感激你的幫助。
R不支持的格式爲 「%Y-%M」 日期......一天需要
你可以做到以下幾點:
as.POSIXct(paste0(as.character(df[,1]),"-01"), format = "%Y-%m-%d")
從而造成
"2015-08-01 CEST" "2015-09-01 CEST" "2015-08-01 CEST"
1)將日期轉換爲動物園的"yearmon"
班,然後到"Date"
班:
> library(zoo)
> transform(df, Date = as.Date(as.yearmon(Date)))
Date Val
1 2015-08-01 1
2 2015-09-01 2
3 2015-08-01 3
該問題未指定要轉換爲哪個日期,因此我們使用了本月的第一個。到了最後一個月的被錄用,我們可以用這個來代替:
transform(df, Date = as.Date(as.yearmon(Date), frac = 1))
2)沒有使用動物園另一種可能性是僅僅自己添加該月的一天,然後轉換爲"Date"
類。
> transform(df, Date = paste(Date, 1, sep = "-"))
Date Val
1 2015-08-01 1
2 2015-09-01 2
3 2015-08-01 3
3)或者,可能希望只使用"yearmon"
直接,因爲這直接車型年份和月份,沒有一天。
> library(zoo)
> transform(df, Date = as.yearmon(Date))
Date Val
1 Aug 2015 1
2 Sep 2015 2
3 Aug 2015 3
注:不要使用"POSIXct"
類,因爲這給出了一個時區相關的結果,如果你不小心,可能會導致細微的錯誤。一個時區中的日期不一定與另一時區中的日期相同。
你需要一天才能有一個約會。 2015年8月不是約會。谷歌「日期定義」 –
相關/可能重複http://stackoverflow.com/questions/6242955 – zx8754