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
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 ครั้ง ดังนั้นจึงสรุปได้ว่า คณะวิทยาศาสตร์มีการใช้ห้องสมุดมากที่สุดเมื่อวัดจากจำนวนการยืมหนังสือรวม >
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 ครั้ง จึงเป็นช่วงที่ควรส่งเสริมการใช้บริการห้องสมุดมากที่สุดนสิงหาคม–กันยายน >
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)
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 คน ซึ่งน้อยกว่าคณะอื่นมาก จึงอาจไม่เพียงพอที่จะใช้เป็นตัวแทนความพึงพอใจของนักศึกษาทั้งคณะ >
prompt ที่ใช้ (คัดลอกมาเต็ม ๆ อย่างน้อย 1 อัน)
สิ่งที่แก้จากที่ AI ให้มา และทำไมต้องแก้
ถ้า knit ไม่ผ่าน เขียนไว้ตรงนี้ว่าติดตรงไหน