Memang, seperti yang telah disebutkan di atas (dan di tempat lain di SO), untuk mengubah string menjadi tanggal, Anda memerlukan tanggal tertentu dalam sebulan. Dari as.Date()
halaman manual:
Jika string tanggal tidak menentukan tanggal secara lengkap, jawaban yang dikembalikan mungkin khusus untuk sistem. Perilaku yang paling umum adalah berasumsi bahwa tahun, bulan, atau hari yang hilang adalah yang sekarang. Jika itu menentukan tanggal secara tidak benar, implementasi yang andal akan memberikan kesalahan dan tanggal dilaporkan sebagai NA. Sayangnya beberapa implementasi umum (seperti glibc
) tidak dapat diandalkan dan menebak arti yang dimaksudkan.
Solusi sederhana adalah menempelkan tanggal "01"
ke setiap tanggal dan digunakan strptime()
untuk menunjukkannya sebagai hari pertama bulan itu.
Bagi mereka yang mencari sedikit lebih banyak latar belakang tentang pemrosesan tanggal dan waktu di R:
Di R, waktu penggunaan POSIXct
dan POSIXlt
kelas serta tanggal menggunakan Date
kelas.
Tanggal disimpan sebagai jumlah hari sejak 1 Januari 1970 dan waktu disimpan sebagai jumlah detik sejak 1 Januari 1970.
Jadi, misalnya:
d <- as.Date("1971-01-01")
unclass(d)
pct <- Sys.time()
unclass(pct)
plt <- as.POSIXlt(pct)
up <- unclass(plt)
names(up)
up$hour
Untuk melakukan operasi pada tanggal dan waktu:
plt - as.POSIXlt(d)
Dan untuk memproses tanggal, Anda dapat menggunakan strptime()
(meminjam contoh ini dari halaman manual):
strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")
dates <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")
strptime(dates, "%d%b%Y")