Membuat data Frame dan Mengolah data Spasial sederhana

Data Frame adalah isian data untuk menampikan data tertentu yang ingin kita olah dengan menggunakan R Studio. Pada Praktikum kali ini kita akan melakukan prkatik membuat data frame dengan kombinasi menggunakan chat gpt # Membuat data frame

data <- data.frame( Nama = c(“Rudi”, “Budi”, “Adi”, “Burhan”, “Sapta”), Umur = c(23, 25, 36, 45, 40), Kota = c(“Makassar”, “Jakarta”, “Jakarta”, “Jayapura”, “Kupang”) )

Menampilkan data

print(data)

Membuat data frame

data2 <- data.frame( Nama = c(“Budi”, “Rudi”, “Joko”, “Widodo”, “Abdul”, “Dian”, “Sastro”, “Mega”, “wati”, “Gusdur”), Kota = c(“Jakarta”, “Jakarta”, “Medan”, “Medan”, “Kupang”, “Banjarmasin”, “Banjarmasin”, “Surabaya”, “Manado”, “Palu”), Status = c(“Lulus”, “Lulus”, “Lulus”, “Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”) )

Menampilkan data

print(data2)

Membuat data frame

data2 <- data.frame( Nama = c(“Budi”, “Rudi”, “Joko”, “Widodo”, “Abdul”, “Dian”, “Sastro”, “Mega”, “wati”, “Gusdur”), Kota = c(“Jakarta”, “Jakarta”, “Medan”, “Medan”, “Kupang”, “Banjarmasin”, “Banjarmasin”, “Surabaya”, “Manado”, “Palu”), Status = c(“Lulus”, “Lulus”, “Lulus”, “Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”) )

Membuat grafik batang berdasarkan jumlah masing-masing status

barplot( height = table(data2\(Nama), names.arg = data2\)Nama, col = rainbow(length(data2$Nama)), # warna berbeda untuk tiap batang main = “Jumlah Data per Nama”, xlab = “Nama”, ylab = “Frekuensi”, las = 2 # Membuat label x-axis miring ke vertikal agar terbaca )

install.packages(“ggplot2”)

Membuat data frame

data2 <- data.frame( Nama = c(“Budi”, “Rudi”, “Joko”, “Widodo”, “Abdul”, “Dian”, “Sastro”, “Mega”, “wati”, “Gusdur”), Kota = c(“Jakarta”, “Jakarta”, “Medan”, “Medan”, “Kupang”, “Banjarmasin”, “Banjarmasin”, “Surabaya”, “Manado”, “Palu”), Status = c(“Lulus”, “Lulus”, “Lulus”, “Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”) )

Membuat tabel jumlah orang per kota

jumlah_per_kota <- table(data2$Kota)

Membuat grafik batang

barplot( jumlah_per_kota, col = rainbow(length(jumlah_per_kota)), # warna berbeda untuk tiap kota main = “Jumlah Orang per Kota”, xlab = “Kota”, ylab = “Jumlah”, las = 2 # rotasi label x agar terbaca )

Membuat data frame

data2 <- data.frame( Nama = c(“Budi”, “Rudi”, “Joko”, “Widodo”, “Abdul”, “Dian”, “Sastro”, “Mega”, “wati”, “Gusdur”), Kota = c(“Jakarta”, “Jakarta”, “Medan”, “Medan”, “Kupang”, “Banjarmasin”, “Banjarmasin”, “Surabaya”, “Manado”, “Palu”), Status = c(“Lulus”, “Lulus”, “Lulus”, “Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”) )

Membuat tabel jumlah berdasarkan Status

jumlah_per_status <- table(data2$Status)

Membuat grafik batang

bar_positions <- barplot( jumlah_per_status, col = c(“green”, “red”), # Warna untuk masing-masing status main = “Distribusi Status Kelulusan”, xlab = “Status”, ylab = “Jumlah”, ylim = c(0, max(jumlah_per_status) + 1) )

Menambahkan angka di atas batang

text(x = bar_positions, y = jumlah_per_status, labels = jumlah_per_status, pos = 3)

Membuat data frame

data2 <- data.frame( Nama = c(“Budi”, “Rudi”, “Joko”, “Widodo”, “Abdul”, “Dian”, “Sastro”, “Mega”, “wati”, “Gusdur”), Kota = c(“Jakarta”, “Jakarta”, “Medan”, “Medan”, “Kupang”, “Banjarmasin”, “Banjarmasin”, “Surabaya”, “Manado”, “Palu”), Status = c(“Lulus”, “Lulus”, “Lulus”, “Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”, “Tidak Lulus”) )

Membuat tabel jumlah berdasarkan Status

jumlah_per_status <- table(data2$Status)

Menentukan warna khusus

warna_status <- c(“Lulus” = “pink”, “Tidak Lulus” = “blue”)

Membuat grafik batang

bar_positions <- barplot( jumlah_per_status, col = warna_status[names(jumlah_per_status)], main = “Distribusi Status Kelulusan”, xlab = “Status”, ylab = “Jumlah”, ylim = c(0, max(jumlah_per_status) + 1) )

Menambahkan angka di atas batang

text(x = bar_positions, y = jumlah_per_status, labels = jumlah_per_status, pos = 3)

install.packages(“sf”) install.packages(“ggplot2”) install.packages(“dplyr”) install.packages(“rgeoboundaries”) # Untuk peta administratif

library(sf) library(ggplot2) library(dplyr) library(rgeoboundaries)

Install dari GitHub

install.packages(“remotes”) remotes::install_github(“wmgeolab/rgeoboundaries”)

Load library

library(rgeoboundaries)

indo_prov <- gb_adm1(“Indonesia”)

Ambil shapefile provinsi di Indonesia

indo <- ne_states(country = “Indonesia”, returnclass = “sf”)

Lihat nama-nama provinsi yang tersedia

unique(indo$name)

Data jumlah perguruan tinggi per provinsi

data_pt <- data.frame( name = c(“Jakarta Raya”, “Jawa Barat”, “Jawa Tengah”, “DI Yogyakarta”, “Banten”, “Jawa Timur”), jumlah_pt = c(115, 200, 300, 350, 23, 230) ) # Filter hanya provinsi di Pulau Jawa jawa <- indo %>% filter(name %in% data_pt$name)

Gabungkan shapefile dengan data jumlah PT

jawa_merged <- left_join(jawa, data_pt, by = “name”)

Plot peta dengan warna berbeda per jumlah PT

ggplot(data = jawa_merged) + geom_sf(aes(fill = jumlah_pt), color = “white”) + scale_fill_gradient(low = “lightyellow”, high = “darkred”) + labs( title = “Jumlah Perguruan Tinggi di Provinsi Pulau Jawa”, fill = “Jumlah PT” ) + theme_minimal() library(rgeoboundaries) indo_prov <- gb_adm1(“Indonesia”)

install.packages(“sf”) install.packages(“ggplot2”) install.packages(“dplyr”)

library(sf) library(ggplot2) library(dplyr)

Filter provinsi di Pulau Jawa

jawa <- indo %>% filter(name %in% data_pt$name)

Gabungkan data peta dan data PT

jawa_merged <- left_join(jawa, data_pt, by = “name”)

Plot peta

ggplot(data = jawa_merged) + geom_sf(aes(fill = jumlah_pt), color = “white”) + scale_fill_gradient(low = “lightyellow”, high = “darkred”) + labs( title = “Jumlah Perguruan Tinggi di Provinsi Pulau Jawa”, fill = “Jumlah PT” ) + theme_minimal()

install.packages(“sf”) install.packages(“ggplot2”) install.packages(“dplyr”) install.packages(“raster”) # Digunakan untuk ambil data GADM

library(sf) library(ggplot2) library(dplyr) library(raster)

Download shapefile level 1 (provinsi) Indonesia dari GADM

indo_gadm <- getData(“GADM”, country = “IDN”, level = 1)

Konversi ke objek sf

indo_sf <- st_as_sf(indo_gadm)

library(sf) library(ggplot2) library(dplyr) library(raster)

Download shapefile level 1 (provinsi) Indonesia dari GADM

indo_gadm <- getData(“GADM”, country = “IDN”, level = 1)

Konversi ke objek sf

indo_sf <- st_as_sf(indo_gadm)

library(geodata) library(sf) library(dplyr) library(ggplot2)

Unduh data administratif level 1 (provinsi)

indo_sf <- geodata::gadm(country = “IDN”, level = 1, path = tempdir())

Konversi ke objek sf

indo_sf <- st_as_sf(indo_sf)

install.packages(“geodata”) install.packages(“sf”) install.packages(“ggplot2”) install.packages(“dplyr”)

library(geodata) library(sf) library(dplyr) library(ggplot2)

Unduh data administratif level 1 (provinsi)

indo_sf <- geodata::gadm(country = “IDN”, level = 1, path = tempdir())

Konversi ke objek sf

indo_sf <- st_as_sf(indo_sf)

Data jumlah perguruan tinggi

data_pt <- data.frame( NAME_1 = c(“Jakarta Raya”, “Jawa Barat”, “Jawa Tengah”, “Yogyakarta”, “Banten”, “Jawa Timur”), jumlah_pt = c(115, 200, 300, 350, 23, 230) )

Filter provinsi di Pulau Jawa

jawa_sf <- indo_sf %>% filter(NAME_1 %in% data_pt$NAME_1)

Gabungkan shapefile dan data

jawa_merged <- left_join(jawa_sf, data_pt, by = “NAME_1”)

ggplot(data = jawa_merged) + geom_sf(aes(fill = jumlah_pt), color = “white”) + scale_fill_gradient(low = “lightyellow”, high = “darkred”) + labs( title = “Jumlah Perguruan Tinggi di Provinsi Pulau Jawa”, fill = “Jumlah PT” ) + theme_minimal()

Install (jika belum)

install.packages(“geodata”) install.packages(“sf”) install.packages(“ggplot2”) install.packages(“dplyr”)

Load library

library(geodata) library(sf) library(dplyr) library(ggplot2)

Ambil data shapefile provinsi Indonesia

indo_sf <- gadm(country = “IDN”, level = 1, path = tempdir()) indo_sf <- st_as_sf(indo_sf)

Data jumlah PT per provinsi di Pulau Jawa

data_pt <- data.frame( NAME_1 = c(“Jakarta Raya”, “Jawa Barat”, “Jawa Tengah”, “Yogyakarta”, “Banten”, “Jawa Timur”), jumlah_pt = c(115, 200, 300, 350, 23, 230) )

Filter Pulau Jawa dan gabungkan data

jawa_sf <- indo_sf %>% filter(NAME_1 %in% data_pt$NAME_1) jawa_merged <- left_join(jawa_sf, data_pt, by = “NAME_1”)

Hitung centroid untuk penempatan label angka

centroid <- st_centroid(jawa_merged)

Plot peta

ggplot(data = jawa_merged) + geom_sf(aes(fill = jumlah_pt), color = “white”) + geom_text(data = centroid, aes(x = st_coordinates(geometry)[,1], y = st_coordinates(geometry)[,2], label = jumlah_pt), size = 4, color = “black”) + labs( title = “Jumlah PT Per Provinsi Pulau Jawa” ) + theme_minimal() + theme(legend.position = “none”) # Hapus legenda