2013-05-06 11 views
5

Chciałbym, aby R uznał jedną kolumnę jako datę. Jest on traktowany jako czynnik podczas importu, jednak gdy próbuję formatować z "as.Date" i "format" otrzymuję tylko NA. Nie jestem pewien, gdzie idę źle.Problemy z formatowaniem daty na format "% 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 ... 

Odpowiedz

14

Rok i miesiąc nie zawierają daty. Potrzebujesz też dnia.

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" 

Można również użyć klasy yearmon w pakiecie z ogrodem zoologicznym.

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

ah, dziękuję! Nie wiedziałem, że.Date potrzebuje również dnia, ponieważ dostałem dane za pomocą: 'ByMonth.Year = rowsum (out $ rain_fall, format (out $ Date,"% Y-% m "))' który nie używa dnia. Dzięki jeszcze raz! – KG12

+0

Oczywiście 'as.Date' potrzebuje jednego dnia. Gdybym cię zapytał: "w którym dniu się urodziłeś?", Nie odpowiedziałbyś: "grudzień 1950". Jak napisano w sekcji _Value_ w '? Formacie',' format' przekształca swój obiekt w wektor znaków. –