str(lib)
## 'data.frame':    72 obs. of  6 variables:
##  $ faculty     : chr  "ศึกษาศาสตร์" "ศึกษาศาสตร์" "ศึกษาศาสตร์" "ศึกษาศาสตร์" ...
##  $ month       : chr  "ม.ค." "ก.พ." "มี.ค." "เม.ย." ...
##  $ borrows     : int  652 880 668 421 517 227 262 644 903 708 ...
##  $ students    : int  3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 ...
##  $ satisfaction: num  4.1 3.8 3.4 3.6 4 3.9 4 4 3.9 3.4 ...
##  $ responses   : int  200 202 158 170 162 69 70 241 267 182 ...
head(lib)
##     faculty month borrows students satisfaction responses
## 1 ศึกษาศาสตร์  ม.ค.     652     3200          4.1       200
## 2 ศึกษาศาสตร์  ก.พ.     880     3200          3.8       202
## 3 ศึกษาศาสตร์  มี.ค.     668     3200          3.4       158
## 4 ศึกษาศาสตร์ เม.ย.     421     3200          3.6       170
## 5 ศึกษาศาสตร์  พ.ค.     517     3200          4.0       162
## 6 ศึกษาศาสตร์  มิ.ย.     227     3200          3.9        69


ข้อ 1 — คณะไหนใช้ห้องสมุดมากที่สุด (3 คะแนน)

faculty_total <- lib %>%
  group_by(faculty) %>%
  summarise(total_borrows = sum(borrows, na.rm = TRUE)) %>%
  arrange(desc(total_borrows))

ggplot(faculty_total,
       aes(x = reorder(faculty, total_borrows),
           y = total_borrows)) +
  geom_col(fill = "#70B4DF") +
  geom_text(aes(label = total_borrows),
            hjust = -0.1) +
  coord_flip() +
  labs(
    title = "จำนวนการยืมหนังสือรวมจำแนกตามคณะ ปีการศึกษา 2568",
    x = "คณะ",
    y = "จำนวนการยืมหนังสือรวม"
  ) +
  theme_minimal() +
  theme(
    panel.grid = element_blank()
  )

คำตอบ (3–4 บรรทัด — “มากที่สุด” ของคุณนับจากอะไร และทำไมเลือกนับแบบนั้น) มากที่สุด ในข้อนี้นับจาก จำนวนการยืมหนังสือรวม ของแต่ละคณะตลอด 12 เดือน เลือกใช้วิธีนี้ เพราะจำนวนการยืมสะท้อนการใช้บริการห้องสมุดโดยตรงและสามารถเปรียบเทียบการใช้บริการระหว่างคณะได้ชัดเจน จากข้อมูลพบว่า คณะวิทยาศาสตร์มีจำนวนการยืมรวมมากที่สุด 7,393 ครั้ง ดังนั้นจึงสรุปได้ว่า คณะวิทยาศาสตร์มีการใช้ห้องสมุดมากที่สุดเมื่อวัดจากจำนวนการยืมหนังสือรวม >


ข้อ 2 — ควรจัดกิจกรรมเดือนไหน (3 คะแนน)

library(ggplot2)
library(dplyr)
library(plotly)

# อ่านข้อมูล
library_data <- read.csv("library_2568.csv")

# กำหนดลำดับเดือน
months <- c(
  "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.",
  "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."
)

# รวมยอดยืมทั้งมหาวิทยาลัย
total_borrow <- library_data %>%
  group_by(month) %>%
  summarise(borrows = sum(borrows, na.rm = TRUE)) %>%
  mutate(month = factor(month, levels = months)) %>%
  arrange(month)

# Plotly
plot_ly(
  total_borrow,
  x = ~month,
  y = ~borrows,
  type = "scatter",
  mode = "lines+markers+text",
  text = ~borrows,
  textposition = "top center",
  hovertemplate = paste(
    "เดือน: %{x}<br>",
    "จำนวนการยืม: %{y}<extra></extra>"
  ),
  line = list(color = "#3B82B6", width = 3),
  marker = list(color = "#3B82B6", size = 8)
) %>%
  layout(
    title = list(
      text = "ยอดยืมห้องสมุดผันผวนตลอดปี โดยสูงสุดในเดือนกันยายน"
    ),
    xaxis = list(
      title = "เดือน",
      showgrid = FALSE
    ),
    yaxis = list(
      title = "จำนวนการยืมรวม",
      showgrid = FALSE
    )
  )

คำตอบ (2 บรรทัด — แนะนำเดือนไหน เพราะอะไร) ควรจัดกิจกรรมในเดือนมิถุนายน เนื่องจากมีจำนวนการยืมหนังสือต่ำที่สุดเพียง 966 ครั้ง จึงเป็นช่วงที่ควรส่งเสริมการใช้บริการห้องสมุดมากที่สุดนสิงหาคม–กันยายน >


ข้อ 3 — หน้าที่ผู้อ่านกดดูเองได้ (4 คะแนน)

library(flexdashboard)
library(shiny)
library(ggplot2)
library(dplyr)
library(crosstalk)
library(DT)
library(plotly)

library_data <- read.csv(
  "library_2568.csv",
  stringsAsFactors = FALSE,
  fileEncoding = "UTF-8"
)

months <- c(
  "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.",
  "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.",
  "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."
)

library_data$month <- factor(
  library_data$month,
  levels = months
)

sd2 <- SharedData$new(
  library_data,
  key = ~paste(faculty, month)
)

bscols(
  widths = c(3, 9),

  filter_checkbox(
    id = "faculty_filter",
    label = "เลือกคณะ",
    sharedData = sd2,
    group = ~faculty
  ),

  datatable(
    sd2,
    rownames = FALSE,
    colnames = c(
      "คณะ",
      "เดือน",
      "จำนวนการยืม",
      "จำนวนนักศึกษา",
      "ความพึงพอใจ",
      "จำนวนผู้ตอบ"
    ),
    options = list(
      pageLength = 8
    )
  )
)
p <- ggplot(
  sd2,
  aes(
    x = month,
    y = borrows,
    fill = faculty
  )
) +
  geom_col(
    position = "stack",
    width = 0.7
  ) +
  scale_fill_brewer(palette = "Blues") +
  labs(
    title = "จำนวนการยืมห้องสมุดรายเดือนแยกตามคณะ",
    x = "เดือน",
    y = "จำนวนการยืม",
    fill = "คณะ"
  ) +
  theme_minimal() +
  theme(
    panel.grid = element_blank(),
    legend.position = "right",
    axis.text.x = element_text(size = 10),
    axis.text.y = element_text(size = 10),
    plot.title = element_text(size = 15)
  )

ggplotly(p)


ข้อ 4 — ตรวจข้อสรุปของผู้บริหาร (3 คะแนน)

library(dplyr)
library(ggplot2)

satisfaction_faculty <- library_data %>%
  group_by(faculty) %>%
  summarise(
    satisfaction = mean(satisfaction, na.rm = TRUE)
  ) %>%
  arrange(desc(satisfaction))

ggplot(
  satisfaction_faculty,
  aes(
    x = reorder(faculty, satisfaction),
    y = satisfaction
  )
) +
  geom_col(
    fill = "#70B4DF",
    width = 0.7
  ) +
  geom_hline(
    yintercept = 4.7,
    linetype = "dashed",
    linewidth = 1
  ) +
  geom_text(
    aes(label = round(satisfaction, 2)),
    hjust = -0.15,
    size = 4
  ) +
  coord_flip() +
  scale_y_continuous(
    limits = c(0, 5),
    breaks = 0:5
  ) +
  labs(
    x = "คณะ",
    y = "คะแนนความพึงพอใจ",
    title = "ความพึงพอใจต่อการใช้บริการห้องสมุดของแต่ละคณะ"
  ) +
  theme_minimal() +
  theme(
    panel.grid = element_blank()
  )

ตัวเลข 4.7 ถูกไหม จากข้อมูลของคณะเภสัชศาสตร์ ค่าเฉลี่ยความพึงพอใจคือ 4.74 คะแนน ดังนั้นถ้าผู้บริหารพูดว่า “4.7 จาก 5 คะแนน” ถือว่า ถูกต้องเมื่อปัดทศนิยม 1 ตำแหน่ง และคณะเภสัชศาสตร์มีค่าเฉลี่ยสูงสุดเมื่อเทียบกับทุกคณะในชุดข้อมูลนี้

ข้อสรุปนี้มีปัญหาอะไร (พร้อมตัวเลขยืนยัน) คณะเภสัชศาสตร์พอใจสูงสุดที่ 4.7 จาก 5 คะแนน มีปัญหาหลักคือจำนวนผู้ตอบน้อย เภสัชศาสตร์เท่ากับ 4.74 คะแนน และมีผู้ตอบรวมเพียง 32 คน ขณะที่คณะอื่นมีผู้ตอบตั้งแต่ 654–2,101 คน ดังนั้น แม้ตัวเลข 4.7 จะถูกต้อง และเป็นค่าเฉลี่ยสูงสุด แต่การสรุปว่าคณะเภสัชศาสตร์ “พอใจสูงสุด” ควรระบุข้อจำกัดเรื่อง ขนาดกลุ่มตัวอย่างที่เล็กมาก ปัญหาของข้อสรุปคือ คณะเภสัชศาสตร์มีค่าเฉลี่ยความพึงพอใจสูงสุด 4.74 คะแนน แต่มีผู้ตอบแบบสอบถามเพียง 32 คน ซึ่งน้อยกว่าคณะอื่นมาก จึงอาจไม่เพียงพอที่จะใช้เป็นตัวแทนความพึงพอใจของนักศึกษาทั้งคณะ >


ข้อ 5 — บันทึกการใช้ AI (2 คะแนน)

prompt ที่ใช้ (คัดลอกมาเต็ม ๆ อย่างน้อย 1 อัน)

สิ่งที่แก้จากที่ AI ให้มา และทำไมต้องแก้



ถ้า knit ไม่ผ่าน เขียนไว้ตรงนี้ว่าติดตรงไหน