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 คะแนน)

library(dplyr)
library(ggplot2)

faculty_responses <- lib %>% 
  group_by(faculty) %>% 
  summarise(total_responses = sum(responses, na.rm = TRUE))

ggplot(faculty_responses, aes(x = reorder(faculty, total_responses), y = total_responses, fill = faculty)) +
  geom_col(show.legend = FALSE) +
  geom_text(aes(label = scales::comma(total_responses)), hjust = -0.1, size = 3.5) +
  coord_flip() + 
  labs(
    title = "จำนวนผู้ตอบแบบสอบถามการใช้งานห้องสมุดรวมแยกตามคณะ",
    x = "คณะ",
    y = "จำนวนผู้ตอบแบบสอบถามรวม (คน)"
  ) +
  theme_minimal() +
  expand_limits(y = max(faculty_responses$total_responses) * 1.15)

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

คณะศึกษาศาสตร์มีการใช้งานห้องสมุดมากที่สุด นับจากการตอบแบบสอบถาม เพราะถ้าไปนับจาการยืม อาจจะไม่ได้จำนวนผู้ใช้งานจริงๆเพราะการยืมคนยืมสามารถยืมซ้ำได้และสามารถยืมได้หลายเล่มแต่การตอบแบบสอบถามสามารถทำได้ครั้งเดียว


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

library(dplyr)
library(ggplot2)

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

monthly_data <- lib %>% 
  group_by(month) %>% 
  summarise(
    total_borrows = sum(borrows, na.rm = TRUE),
    total_responses = sum(responses, na.rm = TRUE)
  ) %>% 
  mutate(month = factor(month, levels = month_order)) %>% 
  arrange(month)

ggplot(monthly_data, aes(x = month, y = total_borrows, group = 1)) +
  geom_line(color = "#2b5c8f", linewidth = 1.2) +
  geom_point(color = "#e74c3c", size = 3) +
  geom_text(aes(label = scales::comma(total_borrows)), vjust = -1, size = 3.5) +
  labs(
    title = "ยอดการยืมหนังสือดร็อบลงต่ำสุดในเดือน เม.ย. (1,880 เล่ม) และสูงสุดในเดือน ก.ย. (3,790 เล่ม)",
    x = "เดือน",
    y = "ยอดการยืมหนังสือรวม (เล่ม)"
  ) +
  theme_minimal() +
  expand_limits(y = c(1500, 4200))

คำตอบ (2 บรรทัด — แนะนำเดือนไหน เพราะอะไร)

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


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

sd <- SharedData$new(lib)

bscols(
  widths = c(2, 10),
  filter_select("fac", "เลือกคณะ", sd, ~faculty),
  datatable(
    sd, 
    rownames = FALSE,
    colnames = c("คณะ", "เดือน", "ยอดยืม (เล่ม)", "จำนวนนิสิต", "ความพึงพอใจ", "ผู้ตอบแบบสอบถาม"),
    options = list(pageLength = 8,
      scrollX = TRUE,
      autoWidth = TRUE
      )
  )
)


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

library(dplyr)
library(ggplot2)

pharm_sat <- lib %>% 
  filter(faculty == "เภสัชศาสตร์") %>% 
  summarise(
    avg_sat = mean(satisfaction, na.rm = TRUE),
    total_responses = sum(responses, na.rm = TRUE)
  )
print(pharm_sat)
##   avg_sat total_responses
## 1    4.74              32
faculty_summary <- lib %>% 
  group_by(faculty) %>% 
  summarise(
    avg_sat = mean(satisfaction, na.rm = TRUE),
    total_responses = sum(responses, na.rm = TRUE)
  )

ggplot(faculty_summary, aes(x = reorder(faculty, avg_sat), y = avg_sat, fill = total_responses)) +
  geom_col() +
  geom_text(aes(label = paste0("ความพึงพอใจ: ", round(avg_sat, 1), "\n(ผู้ตอบ ", total_responses, " คน)")), 
            hjust = 1.1, color = "white", size = 3.5) +
  coord_flip() +
  scale_fill_gradient(low = "#ff7f0e", high = "#1f77b4") +
  labs(
    title = "ความพึงพอใจเทียบกับจำนวนผู้ตอบแบบสอบถามจริง",
    subtitle = "คณะเภสัชศาสตร์มีคะแนนสูง แต่มีกลุ่มตัวอย่างผู้ตอบน้อยเกินไปอย่างมีนัยสำคัญ",
    x = "คณะ",
    y = "คะแนนความพึงพอใจเฉลี่ย (เต็ม 5)",
    fill = "จำนวนผู้ตอบ (คน)"
  ) +
  theme_minimal()

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

ถูกต้อง

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

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


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

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

============== 1 ==============================================================================
********สร้างโค้ดจากโจทย์(แคปโจทย์)


********สิ่งที่ai ให้มา

library(dplyr)
library(ggplot2)

faculty_responses <- lib %>% 
  group_by(faculty) %>% 
  summarise(total_responses = sum(responses, na.rm = TRUE))

ggplot(faculty_responses, aes(x = reorder(faculty, total_responses), y = total_responses, fill = faculty)) +
  geom_col(show.legend = FALSE) +
  geom_text(aes(label = scales::comma(total_responses)), hjust = -0.1, size = 3.5) +
  coord_flip() + 
  labs(
    title = "จำนวนผู้ตอบแบบสอบถามการใช้งานห้องสมุดรวมแยกตามคณะ",
    x = "คณะ",
    y = "จำนวนผู้ตอบแบบสอบถามรวม (คน)"
  ) +
  theme_minimal() +
  expand_limits(y = max(faculty_responses$total_responses) * 1.15)

================================================================================================
=======ข้ออื่นก็ประมารเดียวกันครับ แต่ก็จะมีแก้text ข้อความนิดหน่อย

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

library(dplyr) library(ggplot2)

faculty_responses <- lib %>% group_by(faculty) %>% summarise(total_responses = sum(responses, na.rm = TRUE))

ggplot(faculty_responses, aes(x = reorder(faculty, total_responses), y = total_responses, fill = faculty)) + geom_col(show.legend = FALSE) + geom_text(aes(label = scales::comma(total_responses)), hjust = -0.1, size = 3.5) + coord_flip() + labs( title = “จำนวนผู้ตอบแบบสอบถามการใช้งานห้องสมุดรวมแยกตามคณะ”, x = “คณะ”, y = “จำนวนผู้ตอบแบบสอบถามรวม (คน)” ) + theme_minimal() + expand_limits(y = max(faculty_responses$total_responses) * 1.15)

====== เดิมที Ai มันคำนวณตามยอดการยืมหนังสือ แต่ผมเปลี่ยนโค้ดให้มันคำนวณ การตอบแบบสอบถามแทนครับ
—

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