Ben lubridate
paketini kullanıyorum ve tarihten ayı çıkarmak için month
fonksiyonunu uyguluyorum. Tarih alanında str komutunu çalıştırdım ve şunları elde ettim
Factor w/ 9498 levels "01/01/1979","01/01/1980",..: 5305 1 1 1 1 1 1 1 1 1 ...
> v1$Date<-month(v1$Date)
Error in as.POSIXlt.character(as.character(x), ...) :
character string is not in a standard unambiguous format
İşte veri çerçevemin bir örneği
https://drive.google.com/file/d/0B6cqWmwsEk20Q2dHblhXZi14Wk0/edit?usp=sharing
Neyi yanlış yaptığımı bilmiyorum.
"ay" durumları:
Tarih-zaman bir POSIXct, POSIXlt, Date, Period, chron, yearmon olmalıdır, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries ve fts nesneler.
Nesneniz bir faktördür, bir karakter vektörü bile değildir (muhtemelen stringsAsFactors = TRUE
nedeniyle). Vektörünüzü bazı datetime sınıflarına, örneğin POSIXlt
sınıfına dönüştürmeniz gerekir:
library(lubridate)
some_date <- c("01/02/1979", "03/04/1980")
month(as.POSIXlt(some_date, format="%d/%m/%Y"))
[1] 2 4
Aynı şeyi yapabilen bir dmy
kolaylık fonksiyonu da vardır (@Henrik tarafından önerilmiştir):
month(dmy(some_date))
[1] 2 4
Daha da ileri giderek, @IShouldBuyABoat, dd/mm/yyyy karakter biçimlerinin herhangi bir açık döküm olmadan kabul edildiğine dair başka bir ipucu veriyor:
month(some_date)
[1] 2 4
Biçimlerin bir listesi için ?strptime
bölümüne bakın. Burada "standard unambiguous format" ifadesinin şu anlama geldiğini göreceksiniz
Varsayılan formatlar ISO 8601 uluslararası kurallarını takip eder bir günü "2001-02-28" ve bir zamanı "2001-02-28" olarak ifade eden standart "14:01:02" burada olduğu gibi baştaki sıfırları kullanarak.
Harici bir pakete ihtiyaç duymadan:
eğer tarihiniz aşağıdaki formatta ise:
myDate = as.POSIXct("2013-01-01")
Sonra ay numarasını almak için:
format(myDate,"%m")
Ve ay dizesini almak için:
format(myDate,"%B")
ile tarih formatına dönüştürebilirsiniz-
new_date<- as.Date(old_date, "%m/%d/%Y")}
new_dateöğesinden, ayı
strftime()` ile elde edebilirsiniz
month<- strftime(new_date, "%m")
old_date<- "01/01/1979"
new_date<- as.Date(old_date, "%m/%d/%Y")
new_date
#[1] "1979-01-01"
month<- strftime(new_date,"%m")
month
#[1] "01"
year<- strftime(new_date, "%Y")
year
#[1] "1979"