28, มิ.ย. 2020
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

ใส่ความเห็น

Related Posts