R-studio : ( EP#15 ) จัดการ Attribute Table ข้อมูล Covid World 2020 ด้วยโปรแกรม R
R-studio : ( EP#15 ) จัดการ Attribute Table ข้อมูล Covid World 2020 ด้วยโปรแกรม R
EP#15 นี้ เราจะเรียนรู้การจัดการ Attribute Table ของข้อมูล COVID-19 World 2020 ด้วย โปรแกรม R โดยมุ่งเน้นที่การทำความสะอาด (data cleaning), การรวมกลุ่ม (aggregation), และการเตรียมข้อมูลเพื่อการแสดงผลในแผนที่ GIS หรือ Dashboard
ฟอร์มสำหรับขอลิงค์ R script สำหรับปฏิบัติการนี้ https://docs.google.com/forms/d/e/1FAIpQLSeEH__dM0amOxaWdkCkCsx9ocIRSDMXiL6RDGTHGHOHHkS1AQ/viewform
🎯 วัตถุประสงค์ของบทเรียน
- เรียนรู้การนำเข้า (import) ข้อมูล
.csv
จาก GitHub/Johns Hopkins - จัดการ attribute table (date, country, cumulative case)
- สร้าง
tidy dataset
สำหรับการวิเคราะห์หรือแสดงผลบนแผนที่
📥 ดาวน์โหลด R Script
🔗 ลงทะเบียนขอรับ R Markdown Script:
แบบฟอร์มขอลิงก์ R script สำหรับ EP#15
🧰 แพ็กเกจที่ใช้ในบทเรียน
rCopyEditinstall.packages(c("tidyverse", "lubridate", "sf", "janitor"))
📌 ตัวอย่างการโหลดข้อมูล COVID-19
rCopyEditlibrary(tidyverse)
url <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"
covid_data <- read_csv(url)
🧹 การจัดการ Attribute Table
rCopyEditlibrary(janitor)
covid_clean <- covid_data %>%
clean_names() %>%
pivot_longer(cols = starts_with("x"), names_to = "date", values_to = "cases") %>%
mutate(
date = lubridate::mdy(str_remove(date, "x")),
country_region = as.factor(country_region)
)
🧮 การรวมข้อมูลรายประเทศ รายวัน
rCopyEditcovid_daily <- covid_clean %>%
group_by(country_region, date) %>%
summarise(total_cases = sum(cases, na.rm = TRUE), .groups = 'drop')
🌍 การเชื่อมกับแผนที่ประเทศ (World shapefile)
rCopyEditlibrary(sf)
world <- st_read("path_to_world_shapefile.shp") # หรือใช้ rnaturalearth
covid_map <- world %>%
left_join(covid_daily %>% filter(date == as.Date("2020-04-01")), by = c("NAME" = "country_region"))
🖥️ แสดงผลด้วย ggplot2
rCopyEditggplot(data = covid_map) +
geom_sf(aes(fill = total_cases)) +
scale_fill_viridis_c(option = "plasma") +
labs(title = "Global COVID-19 Cases (Apr 1, 2020)")
🗂️ ส่งออกข้อมูล CSV หรือ GeoPackage
rCopyEditwrite_csv(covid_daily, "covid_summary.csv")
st_write(covid_map, "covid_world_map.gpkg", delete_dsn = TRUE)
📌 ข้อแนะนำเพิ่มเติม
- ควรใช้
countrycode
package ในกรณีที่ชื่อประเทศไม่ตรงกัน (normalize country names) - ปรับโครงสร้างให้อยู่ในรูปแบบ “long format” เพื่อใช้กับ Shiny, Leaflet, หรือ Dashboard
- ทดลองใช้
plotly
หรือleaflet
แสดงผลแบบ interactive