Gunakan format()
metode untuk objek kelas "yearmon"
. Ini contoh tanggal Anda (dibuat dengan benar!)
date1 <- as.yearmon("Mar 2012", "%b %Y")
Kemudian kita dapat mengekstrak bagian tanggal sesuai kebutuhan:
> format(date1, "%b") ## Month, char, abbreviated
[1] "Mar"
> format(date1, "%Y") ## Year with century
[1] "2012"
> format(date1, "%m") ## numeric month
[1] "03"
Ini dikembalikan sebagai karakter. Jika sesuai, masukkan as.numeric()
jika Anda ingin tahun atau bulan numerik sebagai variabel numerik, misalnya
> as.numeric(format(date1, "%m"))
[1] 3
> as.numeric(format(date1, "%Y"))
[1] 2012
Lihat ?yearmon
dan ?strftime
untuk detailnya - yang terakhir menjelaskan karakter placeholder yang dapat Anda gunakan.
vector
dari n elemen, katakanlah 1k tanggal dalam satuvector
?date1
bisa menjadi vektor tanggal.The paket lubridate menakjubkan untuk hal semacam ini:
sumber
lubridate
paket dan mencoba menginstal ini dan tahun yang digunakan (tanggal) tetapi memberikan hari dan bukan tahun apakah ini hanya berfungsi pada tanggal yang formatnya adalah "2015-05 -06 "?Saya tahu OP digunakan di
zoo
sini, tetapi saya menemukan utas ini mencarits
solusi standar untuk masalah yang sama di Google. Jadi saya pikir saya akan menambahkanzoo
jawaban -gratists
juga.sumber
Anda dapat menggunakan
format
:sumber
as.numeric(format(x, "%m"))
bulan sebagai angka misalnya.Untuk vektor besar:
sumber
POSIXlt
objek praktis yang membuat paket kebun binatang tidak diperlukanPertanyaan tidak menyatakan dengan tepat keluaran apa yang diharapkan tetapi dengan asumsi bahwa untuk bulan Anda menginginkan nomor bulan (Januari = 1) dan untuk tahun Anda menginginkan tahun numerik 4 digit, maka asumsikan bahwa kami baru saja menjalankan kode di pertanyaan:
sumber
Memiliki masalah serupa dengan data dari 1800 hingga sekarang, ini berhasil untuk saya:
sumber