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
df_clean <- drop_na(lib)


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

faculty_summary <- df_clean %>%
  group_by(faculty) %>%
  summarise(
    total_borrows = sum(borrows),
    avg_monthly_borrows = mean(borrows),
    students = mean(students),
    borrows_per_student = round(total_borrows / students, 2)
  ) %>%
  arrange(desc(total_borrows)) %>%
  mutate(
    highlight = case_when(
      total_borrows == max(total_borrows) ~ "มากที่สุด",
      total_borrows == min(total_borrows) ~ "น้อยที่สุด",
      TRUE ~ "อื่น ๆ"
    )
  )

ggplot(
  faculty_summary,
  aes(
    x = reorder(faculty, total_borrows),
    y = total_borrows,
    fill = highlight
  )
) +
  geom_col() +
  
  geom_text(
    aes(label = scales::comma(total_borrows)),
    hjust = -0.1,
    size = 4
  ) +
  
  coord_flip() +
  
  scale_fill_manual(
    values = c(
      "มากที่สุด" = "#2B6CB0",
      "น้อยที่สุด" = "#E76F51",
      "อื่น ๆ" = "gray75"
    )
  ) +
  
  labs(
    title = "ปี 2568 คณะวิทยาศาสตร์มีจำนวนการยืมหนังสือรวมสูงที่สุด 7393 ครั้ง",
    subtitle = "เปรียบเทียบจำนวนการยืมหนังสือรวมของแต่ละคณะ",
    x = "คณะ",
    y = "จำนวนการยืมรวม (ครั้ง)",
    fill = NULL
  ) +
  
  theme_minimal() +
  theme(panel.grid = element_blank(),
    legend.position = "right",
    plot.title = element_text(
      face = "bold",
      size = 16
    )
  )

คำตอบ (3–4 บรรทัด — “มากที่สุด” ของคุณนับจากอะไร และทำไมเลือกนับแบบนั้น)

คณะที่มีการเข้าใช้ห้องสมุดมากที่สุดคือคณะวิทยาศาสตร์ซึ่งนับจากจำนวนครั้งในการยืมหนังสือรวมของคณะต่างๆพบว่าคณะวิทยาศาสตร์มีการยืมอยู่ 7393 >


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

month_order <- c("ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", 
                 "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.")
monthly_summary <- df_clean %>%
  group_by(month) %>%
  summarise(total_borrows = sum(borrows, na.rm = TRUE)) %>%
  mutate(month = factor(month, levels = month_order)) %>%
  arrange(month)
ggplot(monthly_summary, aes(x = month, y = total_borrows, group = 1)) +
  geom_col(fill = "#87CEFA", width = 0.6, alpha = 0.85) +
  geom_line(color = "#e74c3c", size = 1.2) +
  geom_point(color = "#e74c3c", size = 3) +
  geom_text(aes(label = scales::comma(total_borrows)), vjust = -0.7, size = 3.5, fontface = "bold") +
  scale_y_continuous(limits = c(0, 4500), labels = scales::comma) +
  labs(
    title = "เดือน ก.ย การยืมหนังสือของนิสิตทั้งมหาลัยสูงถึง 3790 ครั้ง",
    subtitle = "เปรียบเทียบแนวโน้มการเข้าใช้ห้องสมุดรายเดือนของของนิสิตจากจำนวนครั้งในการยืมหนังสือนตลอดทั้งปี",
    x = "เดือน",
    y = "จำนวนการยืมรวม (ครั้ง)"
  ) +
  theme_minimal(base_family = "sans") +
  theme(
    plot.title = element_text(size = 16, face = "bold", hjust = 0.5),
    plot.subtitle = element_text(size = 11, hjust = 0.5, color = "gray30"),
    axis.text = element_text(size = 10, color = "black"),
    axis.title = element_text(size = 11, face = "bold"),
    panel.grid.minor = element_blank()
  )

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


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

df_clean <- df_clean %>%
  mutate(id = row_number())
sd <- SharedData$new(
  df_clean,
  key = ~id
)

g1 <- ggplot(
  sd,
  aes(
    x = month,
    y = borrows,
    group = faculty,
    text = paste0(
      "คณะ: ", faculty,
      "<br>เดือน: ", month,
      "<br>จำนวนการยืม: ", borrows, " ครั้ง"
    )
  )
) +
  geom_line(
    aes(group = faculty),
    colour = "#2b5c8f",
    linewidth = 1
  ) +
  geom_point(
    colour = "#2b5c8f",
    size = 2.5
  ) +
  labs(
    title = "จำนวนการยืมหนังสือของแต่ละคณะในแต่ละเดือน",
    subtitle = "เลือกคณะด้านล่างเพื่อดูข้อมูลเฉพาะคณะที่สนใจ",
    x = "เดือน",
    y = "จำนวนการยืม (ครั้ง)"
  ) +
  theme_minimal(base_size = 11)

g2 <- ggplot(
  sd,
  aes(
    x = satisfaction,
    y = borrows,
    text = paste0(
      "คณะ: ", faculty,
      "<br>เดือน: ", month,
      "<br>ความพึงพอใจ: ", satisfaction,
      "<br>จำนวนการยืม: ", borrows, " ครั้ง"
    )
  )
) +
  geom_point(
    colour = "#4C5C96",
    alpha = 0.65,
    size = 2.8
  ) +
  labs(
    title = "ความพึงพอใจกับจำนวนการยืมหนังสือ",
    subtitle = "เปรียบเทียบคะแนนความพึงพอใจกับจำนวนการยืมในแต่ละเดือน",
    x = "คะแนนความพึงพอใจ",
    y = "จำนวนการยืม (ครั้ง)"
  ) +
  theme_minimal(base_size = 11)
bscols(

  ggplotly(
    g1,
    tooltip = "text",
    height = 350
  ) %>%
    highlight(
      on = "plotly_selected",
      off = "plotly_doubleclick"
    ),

  ggplotly(
    g2,
    tooltip = "text",
    height = 350
  ) %>%
    highlight(
      on = "plotly_selected",
      off = "plotly_doubleclick"
    )

)
sd2 <- SharedData$new(
  df_clean,
  key = ~id)
bscols(widths = c(3, 9),filter_checkbox(
    "faculty_filter",
    "เลือกคณะ",
    sd2,
    ~faculty
  ), datatable(
    sd2,
    rownames = FALSE,

    colnames = c(
      "คณะ",
      "เดือน",
      "จำนวนการยืม",
      "จำนวนนักศึกษา",
      "ความพึงพอใจ",
      "จำนวนผู้ตอบ",
      "ID"
    ),

    options = list(
      pageLength = 8,
      scrollX = TRUE
    )
  )
)


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

ตัวเลข 4.7 ถูกไหม

ข้อสรุปนี้มีปัญหาอะไร (พร้อมตัวเลขยืนยัน)


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

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

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



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