Penanganan Tanggal dan Waktu
Pelajaran 13 dari 14 dalam kursus Manipulasi Data dengan R di Coddy.
Bahasa ini menyediakan fungsi dan class bawaan untuk bekerja dengan object tanggal dan waktu secara efisien.
Class Tanggal dan Waktu di R
R memiliki tiga class utama untuk bekerja dengan tanggal dan waktu:
Date: Merepresentasikan tanggal tanpa waktuPOSIXct: Merepresentasikan tanggal dan waktu sebagai jumlah detik sejak 1 Januari 1970POSIXlt: Merepresentasikan tanggal dan waktu sebagai list komponen (tahun, bulan, hari, dan sebagainya)
Membuat Object Tanggal dan Waktu
Kamu dapat membuat object tanggal dan waktu menggunakan fungsi berikut:
# Buat object Date
today <- Sys.Date()
# Buat object POSIXct
now <- Sys.time()
# Ubah string menjadi Date
date_from_string <- as.Date("2023-06-15")
# Ubah string menjadi POSIXct
datetime_from_string <- as.POSIXct("2023-06-15 14:30:00")Memformat Object Tanggal dan Waktu
Gunakan format() untuk mengubah object tanggal dan waktu menjadi string:
date <- as.Date("2023-06-15")
formatted_date <- format(date, "%B %d, %Y") # Menghasilkan: "June 15, 2023"Mengurai String Tanggal dan Waktu
Untuk mengurai string tanggal dan waktu, gunakan as.Date() atau as.POSIXct() dengan string format:
date_string <- "15/06/2023"
parsed_date <- as.Date(date_string, format = "%d/%m/%Y")Perhitungan Tanggal dan Waktu
R memungkinkan operasi aritmetika pada object tanggal dan waktu:
today <- Sys.Date()
next_week <- today + 7 # Tambahkan 7 hari
time_diff <- as.numeric(next_week - today) # Hitung selisih dalam hariMengekstrak Komponen
Kamu dapat mengekstrak komponen tertentu dari object tanggal dan waktu:
date <- as.Date("2023-06-15")
year <- format(date, "%Y")
month <- format(date, "%m")
day <- format(date, "%d")
hour <- format(date, "%H")
minute <- format(date, "%M")
second <- format(date, "%S")Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Tantangan
SedangBuat fungsi yang memproses list peristiwa beserta tanggal dan waktunya. Fungsi tersebut harus melakukan operasi berikut:
- Ubah string input menjadi data frame
- Parse kolom 'datetime' menjadi objek POSIXct
- Ambil hari dalam minggu untuk setiap peristiwa
- gunakan fungsi
weekdays(). Contoh:weekdays(date)
- gunakan fungsi
- Hitung durasi dalam jam antara setiap peristiwa dan peristiwa pertama
Untuk mendapatkan tanggal dan waktu pertama, gunakan:
mutate( datetime = as.POSIXct(datetime, format = "%Y-%m-%d %H:%M:%S"), first_date = min(datetime), ... )
- Format kolom 'datetime' agar hanya menampilkan tanggal dalam format "YYYY-MM-DD"
- Buat kolom baru
time_categoryberdasarkan jam terjadinya peristiwa:- Jika jam berada di antara 5 dan 11 (inklusif), tetapkan "Morning"
- Jika jam berada di antara 12 dan 16 (inklusif), tetapkan "Afternoon"
- Jika jam berada di antara 17 dan 20 (inklusif), tetapkan "Evening"
- Jika tidak, tetapkan "Night"
- Urutkan data frame berdasarkan datetime asli
- Cetak hanya data frame hasil dengan kolom berikut (dalam urutan ini):
event, datetime, day_of_week, duration_hours, date, time_category
Coba sendiri
# Baca input
con <- file("stdin", "r")
input_data <- suppressWarnings(readLines(con))
# Ubah string input menjadi data frame
events_df <- read.csv(text = input_data, stringsAsFactors = FALSE)
# TODO: Tulis kodemu di bawah untuk memproses data frame events
# 1. Ubah kolom 'datetime' menjadi object POSIXct
# 2. Ambil nama hari untuk setiap peristiwa
# 3. Hitung selisih waktu dalam jam antara setiap peristiwa dan peristiwa pertama
# 4. Format kolom 'datetime' agar hanya menampilkan tanggal dalam format "YYYY-MM-DD"
# 5. Buat kolom baru 'time_category' berdasarkan jam terjadinya peristiwa
# 6. Urutkan data frame berdasarkan datetime asli
# Cetak data frame hasilnya
print(events_df)Semua pelajaran di Manipulasi Data dengan R
Latihan sendiri: Compiler R online