2013-05-06 51 views
5

我希望R將一列標識爲日期。它在導入過程中被看作是因素,但是,當我嘗試使用'as.Date'和'format'進行格式化時,我只獲得了NAs。我不確定我要去哪裏錯。將日期格式化爲格式「%Y-%m」的問題

> d = read.table("ByMonth.Year_54428.txt", header=T, sep=",") 
> str(d) 
'data.frame': 607 obs. of 2 variables: 
$ V1 : Factor w/ 607 levels "1950-12","1951-01",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ Rain: int 100 56000 29293 37740 19649 41436 58067 51082 49629 62680 ... 
> 
> 
> Date.form1 <- as.Date(d$V1, "%Y-%m") 
> str(Date.form1) 
Date[1:607], format: NA NA NA NA NA NA NA NA NA NA NA NA NA NA ... 
> 
> Date.form2 = as.Date(as.character(d$V1), format="%Y-%m") 
> str(Date.form2) 
Date[1:607], format: NA NA NA NA NA NA NA NA NA NA NA NA NA NA ... 

回答

14

一年零一個月沒有約會。你還需要一天。

d <- data.frame(V1=c("1950-12","1951-01")) 
as.Date(paste(d$V1,1,sep="-"),"%Y-%m-%d") 
# [1] "1950-12-01" "1951-01-01" 

您還可以使用zoo包中的yearmon類。

library(zoo) 
as.yearmon(d$V1) 
# [1] "Dec 1950" "Jan 1951" 
+0

啊,謝謝!我不知道as。date也需要一天,因爲我通過使用:ByMonth.Year = rowsum(out $ rain_fall,format(out $ Date,「%Y-%m」))'不使用一天。再次感謝! – KG12 2013-05-07 09:46:04

+0

當然'as.Date'需要一天的時間。如果我問你,「你哪天出生?」,你不會回答,「1950年12月」。正如它在'?format'的_Value_部分所說的,'format'將它的對象轉換爲一個字符向量。 – 2013-05-07 13:17:20

相關問題