library(readxl)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data = read.csv("D:\\data_deska\\1993-2012\\CH_Imputasi_RClimDex_Siap.csv")
# 3. Beri nama kolom sementara agar mudah difilter di R
colnames(data) = c("Tahun", "Bulan", "Tanggal", "PRCP", "TMAX", "TMIN")
# Ambil hanya tahun 1993 sampai 2012
data_filter = data %>%
filter(Tahun >= 1993 & Tahun <= 2012)
str(data_filter)
## 'data.frame': 7305 obs. of 6 variables:
## $ Tahun : int 1993 1993 1993 1993 1993 1993 1993 1993 1993 1993 ...
## $ Bulan : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Tanggal: int 1 2 3 4 5 6 7 8 9 10 ...
## $ PRCP : num 3.5 4 0.8 2 5.2 32.4 2 0 0.2 0 ...
## $ TMAX : num 27.4 27.4 28 29.2 27.8 27.2 27.2 27.7 28.4 26.7 ...
## $ TMIN : num 20 20 20 20 20 20 20 20 20 20 ...
# 1. Cek data mana saja yang bermasalah (Gunakan nama kolom yang baru: TMIN dan TMAX)
problem = data_filter %>%
filter(TMIN > TMAX & TMAX != -99.9 & TMIN != -99.9)
print("Ini data yang suhunya terbalik:")
## [1] "Ini data yang suhunya terbalik:"
print(problem)
## Tahun Bulan Tanggal PRCP TMAX TMIN
## 1 2001 2 28 7.4 20.2 29
## 2 2010 9 6 24.7 21.2 24
# 2. Langsung tukar dan perbaiki datanya
data_koreksi = data_filter %>%
mutate(
TMAX_baru = ifelse(TMIN > TMAX & TMAX != -99.9 & TMIN != -99.9, TMIN, TMAX),
TMIN_baru = ifelse(TMIN > TMAX & TMAX != -99.9 & TMIN != -99.9, TMAX, TMIN)
) %>%
select(Tahun, Bulan, Tanggal, PRCP, TMAX = TMAX_baru, TMIN = TMIN_baru)
# 3. Simpan ulang file yang sudah benar (timpa file sebelumnya)
write.table(data_koreksi, "D:/data_deska/CH_1993_2012_RClimDex_tukar.txt",
sep = "\t", row.names = FALSE, col.names = FALSE, quote = FALSE)
write.table(data_koreksi, "D:/data_deska/CH_1993_2012_RClimDex_tukar.csv",
sep = ",", row.names = FALSE, col.names = FALSE, quote = FALSE)
print("Perbaikan selesai!")
## [1] "Perbaikan selesai!"
# 1. Baca file CSV yang sudah kita perbaiki tadi
# (header = FALSE karena file RClimDex tidak punya judul kolom)
data_cek_lagi = read.csv("D:\\data_deska\\1993-2012\\CH_1993_2012_RClimDex.csv", header = FALSE)
# 2. Beri nama kolom agar R tahu mana TMAX dan TMIN
colnames(data_cek_lagi) = c("Tahun", "Bulan", "Tanggal", "PRCP", "TMAX", "TMIN")
# 3. Cari apakah masih ada TMIN yang lebih besar dari TMAX
masih_bermasalah = data_cek_lagi %>%
filter(TMIN > TMAX & TMAX != -99.9 & TMIN != -99.9)
# 4. Tampilkan jumlah baris yang bermasalah
jumlah_sisa_error = nrow(masih_bermasalah)
print(paste("Jumlah data yang suhunya masih terbalik:", jumlah_sisa_error, "hari"))
## [1] "Jumlah data yang suhunya masih terbalik: 0 hari"
# 5. Tampilkan isi datanya
print("Detail data (jika barisnya 0, berarti sudah AMAN 100%):")
## [1] "Detail data (jika barisnya 0, berarti sudah AMAN 100%):"
print(masih_bermasalah)
## [1] Tahun Bulan Tanggal PRCP TMAX TMIN
## <0 rows> (or 0-length row.names)
# 1. Menghitung total angka -99.9 di setiap kolom
print("Jumlah missing value format RClimDex (-99.9) di setiap kolom:")
## [1] "Jumlah missing value format RClimDex (-99.9) di setiap kolom:"
print(colSums(data_cek_lagi == -99.9))
## Tahun Bulan Tanggal PRCP TMAX TMIN
## 0 0 0 0 0 0
# 2. (Opsional) Kalau kamu ingin melihat langsung baris tanggal berapa saja yang datanya kosong
data_kosong_rclimdex = data_cek_lagi %>%
filter(PRCP == -99.9 | TMAX == -99.9 | TMIN == -99.9)
# Menampilkan 6 baris pertama dari data yang kosong
print("Beberapa contoh baris yang memuat -99.9:")
## [1] "Beberapa contoh baris yang memuat -99.9:"
print(head(data_kosong_rclimdex))
## [1] Tahun Bulan Tanggal PRCP TMAX TMIN
## <0 rows> (or 0-length row.names)
# 1. Ingatkan R lagi di mana lokasi "rumah baru" kita
.libPaths(c("C:/RLib", .libPaths()))
# 2. Install langsung RClimDex dari GitHub (agar tidak perlu repot mencari file .tar.gz lagi)
# Karena pondasinya sudah kuat, instalasi ini akan berjalan mulus
remotes::install_github("ECCC-CDAS/RClimDex")
## Using GitHub PAT from the git credential store.
## Skipping install of 'RClimDex' from a github remote, the SHA1 (8b769ea6) has not changed since last install.
## Use `force = TRUE` to force installation
# 3. Panggil dan buka aplikasinya!
library(RClimDex)
## Loading required package: climdex.pcic
## Loading required package: PCICt
##
## RClimDex 2.0
## Use rclimdex.start() to launch or re-launch the interface.
rclimdex.start()