Introduction
หัวข้อนี้จะเจาะลึกการใช้งานกลุ่มฟังก์ชัน get_*_prices ซึ่งประกอบด้วย
get_daily_prices(), get_weekly_prices(), และ
get_monthly_prices()
กฎข้อสำคัญ
การค้นหาจะรับพารามิเตอร์หลักเพียงโหมดเดียวเท่านั้น -
คุณไม่สามารถใช้ category_code ร่วมกับ product_code
ได้
ก่อนเริ่มต้นดึงข้อมูล คุณควรตรวจสอบรหัสที่ต้องการจากฟังก์ชัน show_*()
ที่เหมาะสม: - show_daily_categories() /
show_daily_products() - สำหรับรายวัน -
show_weekly_categories() /
show_weekly_products() - สำหรับรายสัปดาห์และรายเดือน
library(talatThaiR)
library(dplyr)
# ตรวจสอบรหัสที่มี
show_daily_categories()
show_weekly_products()ราคาสินค้ารายวัน (get_daily_prices)
ฟังก์ชันนี้มีความยืดหยุ่นสูง โดยรองรับโหมดการค้นหา 3 แบบ:
| โหมด | พารามิเตอร์ | คำอธิบาย |
|---|---|---|
| Category | category_code |
ค้นหาตามหมวดหมู่ |
| Product | product_code |
ค้นหาตามสินค้า |
| Date | date |
ดึงข้อมูลสินค้าทุกชนิดที่มีในวันที่กำหนด |
โหมดที่ 1: ค้นหาด้วย Category
ค้นหาราคาของสินค้าทั้งหมดในหมวดหมู่หนึ่ง
# ดึงข้อมูลราคาข้าวหอมมะลิทุกขนาด ทั้งหมดที่มี
rice_mali_all <- get_daily_prices(category_code = "RICE_MALI")
head(rice_mali_all)
# ดูสถิติพื้นฐาน
nrow(rice_mali_all) # จำนวนระเบียน
summary(rice_mali_all$day_price) # สถิติราคาโหมดที่ 2: ค้นหาด้วย Product
ค้นหาราคาของสินค้าระดับตัวเฉพาะ
# ดึงข้อมูลราคามะนาวขนาด XL
lime_xl <- get_daily_prices(product_code = "LIME_XL")
head(lime_xl)
# ดึงข้อมูลราคาไข่ไก่ (เบอร์ 3)
egg_3 <- get_daily_prices(product_code = "EGG_3")
head(egg_3)โหมดที่ 3: ดึงข้อมูลทุกอย่างในวันที่กำหนด
ดึงราคาของสินค้าทุกประเภทหลักในวันที่ระบุ
# ดึงข้อมูลราคาสินค้าทุกชนิดของวันนี้
all_prices_today <- get_daily_prices(date = as.character(Sys.Date()))
head(all_prices_today)
# ดึงข้อมูลของวันที่เฉพาะ
all_prices_date <- get_daily_prices(date = "2026-01-15")
head(all_prices_date)การกรองด้วยช่วงเวลา (Date Filtering)
หากคุณค้นหาด้วยรหัส (category_code หรือ product_code) คุณสามารถกำหนด
start_date และ end_date เพื่อจำกัดผลลัพธ์ได้
# ดึงข้อมูลราคาข้าวหอมมะลิ ตั้งแต่ 1 มค. 2026 เป็นต้นไป
rice_mali_2026 <- get_daily_prices(
category_code = "RICE_MALI",
start_date = "2026-01-01"
)
# ดึงข้อมูลในช่วงเวลาที่ระบุ
lime_range <- get_daily_prices(
product_code = "LIME_M",
start_date = "2026-01-01",
end_date = "2026-03-31"
)
# end_date ค่าเริ่มต้นคือวันนี้ ถ้าไม่ระบุ
tomorrow_range <- get_daily_prices(
category_code = "CHICKEN",
start_date = "2026-01-01"
# end_date จะเป็นวันนี้อัตโนมัติ
)ตัวอย่าง: การวิเคราะห์แนวโน้ราคา
# ดึงข้อมูลและคำนวณแนวโน้
lime_daily <- get_daily_prices(
product_code = "LIME_M",
start_date = "2026-01-01",
end_date = "2026-03-31"
)
# วิเคราะห์แนวโน้ราคา
trend_analysis <- lime_daily |>
dplyr::mutate(data_date = as.Date(data_date)) |>
dplyr::arrange(data_date) |>
dplyr::mutate(
moving_avg_7 = stats::filter(day_price, rep(1/7, 7), sides = 2),
price_diff = day_price - dplyr::lag(day_price, 1)
) |>
dplyr::select(data_date, day_price, moving_avg_7, price_diff)
head(trend_analysis)ราคาสินค้ารายสัปดาห์ (get_weekly_prices)
สำหรับรายสัปดาห์ การระบุเวลาจะใช้ปีพุทธศักราช (year_th) และเดือน (month) แทนรูปแบบวันที่
| โหมด | พารามิเตอร์ | คำอธิบาย |
|---|---|---|
| Category | category_code |
ค้นหาตามหมวดหมู่ |
| Product | product_code |
ค้นหาตามสินค้า |
| Date |
year_th + month
|
ค้นหาของทุกสินค้าในเดือนที่ระบุ |
ข้อควรระวัง
-
year_thและmonthต้องระบุคู่กันเสมอ เมื่อใช้ร่วมกันหรือใช้แยกเป็นโหมดสุดท้าย -
monthไม่สามารถระบุเดี่ยวๆ ได้ ต้องมีyear_thกำกับเสมอ
ตัวอย่างการใช้งาน
โหมด Standalone: ดึงข้อมูลทุกสินค้าในเดือนหนึ่ง
# ดึงข้อมูลสัปดาห์ของสินค้าทั้งหมดในเดือน 2 ปี 2569
all_weekly_feb2569 <- get_weekly_prices(year_th = 2569, month = 2)
# ดูว่ามีสินค้าอะไรบ้างในข้อมูล
unique(all_weekly_feb2569$product_name)โหมด Category: ค้นหาด้วยหมวดหมู่
# ดึงข้อมูลรายสัปดาห์ของหมวดกระบือ เฉพาะเดือน 2 ปี 2569
buffalo_weekly <- get_weekly_prices(
category_code = "BUFFALO",
year_th = 2569,
month = 1
)
# สถิติราคากระบือรายสัปดาห์
summary(buffalo_weekly)โหมด Product: ค้นหาด้วยสินค้า
# ดึงข้อมูลรายสัปดาห์ของสุกรมีชีวิต
pork_weekly <- get_weekly_prices(product_code = "PORK_LIVE_100")
# กรองเฉพาะปี 2569
pork_weekly_2569 <- pork_weekly |>
dplyr::filter(year_th == "2569")
# ดูราคาเฉลี่ยในแต่ละเดือน
pork_monthly_avg <- pork_weekly_2569 |>
dplyr::group_by(month) |>
dplyr::summarise(
avg_price = mean(value),
min_price = min(value),
max_price = max(value)
)
print(pork_monthly_avg)ราคาสินค้ารายเดือน (get_monthly_prices)
รายเดือนใช้โครงสร้างคล้ายกับรายสัปดาห์ แต่มีความแตกต่างที่สำคัญ:
| ความแตกต่าง | รายสัปดาห์ | รายเดือน |
|---|---|---|
การระบุ month
|
ไม่สามารถระบุเดี่ยวๆ | ไม่สามารถระบุเดี่ยวๆ ต้องมี year_th กำกับ |
| ระดับต่ำสุด | ใช้ year_th + month แยกเป็นโหมดสุดท้าย |
ใช้ year_th + month แยกเป็นโหมดสุดท้าย |
ตัวอย่างการใช้งาน
ดึงข้อมูลรายเดือนของหมวดหมู่
# ดึงข้อมูลหมวดกระบือรายเดือน (ข้อมูลทั้งหมดที่มี)
buffalo_monthly_all <- get_monthly_prices(category_code = "BUFFALO")
# วิเคราะห์แนวโน้ราคาระยเดือน
buffalo_trend <- buffalo_monthly_all |>
dplyr::arrange(month, year_th)
head(buffalo_trend)ดึงข้อมูลรายเดือนพร้อมกรองปี
# ดึงข้อมูลสินค้ารายเดือน เฉพาะปี 2569
pork_monthly_2569 <- get_monthly_prices(
product_code = "PORK_LIVE_100",
year_th = 2569
)
# เปรียบเทียบราคาเฉลี่ยเดือน
pork_monthly_2569 |>
dplyr::arrange(month) |>
dplyr::select(year_th, month, value)ดึงข้อมูลรายเดือนพร้อมกรองทั้งปีและเดือน
# กรองข้อมูลเฉพาะไตรมาสที่ 1 ของทุกปี
q1_cassava <- get_monthly_prices(
category_code = "CASSAVA"
) |>
dplyr::filter(month %in% 1:3)
# คำนวณราคาเฉลี่ยไตรมาส
q1_avg <- q1_cassava |>
dplyr::group_by(year_th) |>
dplyr::summarise(
q1_avg = mean(value, na.rm = TRUE),
q1_min = min(value, na.rm = TRUE),
q1_max = max(value, na.rm = TRUE)
)
print(q1_avg)Advanced Use Cases
เปรียบเทียบราคาระหว่างสินค้า
# ดึงข้อมูลราคาข้าวหอมมะลิและข้าวเปลือกเจ้า ในช่วงเวลาเดียวกัน
cassava_prices_20260101_20260201 <- get_daily_prices(
category_code = "CASSAVA",
start_date = "2026-01-01",
end_date = "2026-02-01"
)
# เรียกชื่อข้าวทุกชนิดในหมวด
cassava_names <- show_daily_products() |>
dplyr::filter(grepl("^CASSAVA", Code)) |>
dplyr::pull(Name)
cassava_prices_20260101_20260201 |>
dplyr::summarise(avg_price = mean(day_price, na.rm = TRUE), .by = product_name)การติดตามราคาสินค้าหลายชนิด
# สร้างฟังก์ชันสำหรับติดตามราคา
track_prices <- function(product_code, start_date, end_date) {
get_daily_prices(
product_code = product_code,
start_date = start_date,
end_date = end_date
) |>
dplyr::mutate(
product_code = product_code,
data_date = as.Date(data_date)
) |>
dplyr::select(product_code, data_date, day_price, year_th, month)
}
# ติดตามราคามะนาวหลายขนาด พร้อมกัน
products_to_track <- c("LIME_XL", "LIME_S")
XL_vs_S_lime_prices <- purrr::map_dfr(
products_to_track,
track_prices,
start_date = "2026-01-01",
end_date = "2026-02-01"
)Tips and Best Practices
-
เริ่มจาก
show_*()เสมอ - ตรวจสอบรหัสที่มีก่อนดึงข้อมูล -
ใช้
start_dateและend_dateสำหรับช่วงเวลา - ดึงเฉพาะข้อมูลที่ต้องการเพื่อประหบเวลาและประหบเครือขาง -
ตรวจสอบปีพุทธศักราช - รายสัปดาห์และรายเดือนใช้
year_th(พ.ศ.) - สังเกตปัญหาของ Pagination - ข้อมูลจำนวนมากจะดึงช้ากว่าปกติ
- จัดเก็บข้อมูล - ถ้าดึงข้อมูลบ่อย ควรจัดเก็บลงไฟล์เพื่อไม่ต้องดึงซ้ำ