การเรียงเวกเตอร์ด้วย sort()
เรียงเวกเตอร์ตัวเลขและอักขระจากน้อยไปมากหรือมากไปน้อย
การเรียงเวกเตอร์ด้วย sort() เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
sort() ทำอะไร
ฟังก์ชัน sort() จะจัดสมาชิกของเวกเตอร์ตามลำดับจากน้อยไปมากเป็นค่าเริ่มต้น ฟังก์ชันนี้ใช้ได้กับเวกเตอร์ numeric, character และ logical และจะคืนเวกเตอร์ที่เรียงลำดับใหม่โดยไม่แก้ไขเวกเตอร์เดิม
scores <- c(42, 7, 95, 13, 67, 31)
sorted_scores <- sort(scores)
print(sorted_scores)การเรียงลำดับจากมากไปน้อย
ส่งค่า decreasing = TRUE ให้กับ sort() เพื่อกลับลำดับ การทำเช่นนี้มีประโยชน์สำหรับการจัดอันดับผลลัพธ์จากสูงสุดไปต่ำสุด เช่น คะแนนบนกระดานผู้นำหรือตัวเลขยอดขาย
prices <- c(19.99, 5.49, 89.00, 34.50, 12.75)
sort(prices, decreasing = TRUE)การเรียงเวกเตอร์ Character
เวกเตอร์ character จะถูกเรียงตามลำดับพจนานุกรม (ตามตัวอักษร) R ใช้การตั้งค่าภาษาท้องถิ่นของระบบในการจัดลำดับ ดังนั้นตัวพิมพ์ใหญ่อาจถูกเรียงก่อนตัวพิมพ์เล็ก โดยขึ้นอยู่กับการตั้งค่าดังกล่าว
fruits <- c('banana', 'Apple', 'cherry', 'apricot', 'Blueberry')
sort(fruits)พฤติกรรมการเรียงลำดับที่คำนึงถึงตัวพิมพ์
ในภาษาท้องถิ่นส่วนใหญ่ ตัวพิมพ์ใหญ่จะถูกเรียงก่อนตัวพิมพ์เล็ก หากต้องการเรียงโดยไม่คำนึงถึงตัวพิมพ์ ให้แปลงเป็นตัวพิมพ์เดียวกันก่อนด้วย tolower() หรือ toupper() แล้วจึงเรียงลำดับ
words <- c('Zebra', 'apple', 'Mango', 'banana')
# Case-sensitive (uppercase first)
sort(words)
# Case-insensitive approach
words[order(tolower(words))]การจัดการค่า NA ด้วย na.last
โดยค่าเริ่มต้น sort() จะลบค่า NA ออก ใช้ na.last = TRUE เพื่อวางค่า NA ไว้ท้ายสุด หรือใช้ na.last = FALSE เพื่อวางไว้ด้านหน้า ค่านี้ควบคุมตำแหน่งของค่าที่หายไปในผลลัพธ์
data <- c(5, NA, 2, NA, 8, 1)
# Default: NAs removed
sort(data)
# NAs at end
sort(data, na.last = TRUE)
# NAs at beginning
sort(data, na.last = FALSE)การเรียงเวกเตอร์ Logical
ในการเรียงจากน้อยไปมาก เวกเตอร์ logical จะวาง FALSE (0) ก่อน TRUE (1) ซึ่งมีประโยชน์เมื่อคุณต้องการจัดกลุ่มค่า TRUE/FALSE ไว้ด้วยกัน
flags <- c(TRUE, FALSE, TRUE, FALSE, FALSE, TRUE)
sort(flags)
sort(flags, decreasing = TRUE)sort() รักษาชนิดของเวกเตอร์
sort() จะคืนเวกเตอร์ที่มีชนิดเดียวกับข้อมูลนำเข้าเสมอ การเรียง integer จะคืน integer การเรียง double จะคืน double และการเรียง character จะคืน character แอตทริบิวต์ class จะยังคงอยู่
int_vec <- c(5L, 2L, 8L, 1L, 4L)
result <- sort(int_vec)
print(result)
print(class(result))
print(typeof(result))sort.int() สำหรับการเรียง Integer
sort.int() เป็นฟังก์ชันระดับล่างที่ออกแบบมาโดยเฉพาะสำหรับการเรียงเวกเตอร์ integer หรือ double ฟังก์ชันนี้รับอาร์กิวเมนต์เดียวกับ sort() แต่จะเร็วกว่าเล็กน้อยสำหรับเวกเตอร์ตัวเลขขนาดใหญ่ เพราะข้ามค่าใช้จ่ายบางส่วนของการเลือกใช้ method
big_vec <- c(100L, 3L, 77L, 22L, 55L, 9L)
# sort.int works like sort for numeric/integer vectors
result <- sort.int(big_vec, decreasing = FALSE)
print(result)เวกเตอร์เดิมจะไม่ถูกเปลี่ยนแปลง
คุณสมบัติสำคัญของ sort() คือ ฟังก์ชันนี้จะไม่แก้ไขเวกเตอร์เดิม แต่จะคืนเวกเตอร์ที่เรียงลำดับใหม่ หากต้องการเก็บลำดับที่เรียงแล้ว คุณต้องกำหนดผลลัพธ์ให้กับตัวแปร
temps <- c(22.5, 18.0, 30.1, 15.3, 27.8)
sorted_temps <- sort(temps)
cat('Original:', temps, '\n')
cat('Sorted: ', sorted_temps, '\n')การเรียงลำดับและการใช้ดัชนีร่วมกัน
บางครั้งคุณต้องการทั้งค่าที่เรียงแล้วและตำแหน่งเดิมของค่าเหล่านั้น ให้ใช้ sort() ร่วมกับ which() หรือใช้ order() (ซึ่งจะกล่าวถึงในบทเรียนถัดไป) เพื่อดึงดัชนีเดิมพร้อมกับค่าที่เรียงแล้ว
exam_scores <- c(78, 92, 65, 88, 71)
sorted <- sort(exam_scores)
cat('Sorted scores:', sorted, '\n')
# Find what rank each original score gets
ranks <- rank(exam_scores)
cat('Rank of each student:', ranks, '\n')รูปแบบการใช้ sort() ในทางปฏิบัติ
รูปแบบที่ใช้บ่อยคือ การเรียงค่าที่ไม่ซ้ำกันจากเวกเตอร์ หรือการหาค่า N อันดับแรกที่มีค่ามากที่สุด โดยใช้ sort() ร่วมกับ head() หรือ tail()
sales <- c(120, 340, 95, 210, 340, 180, 95, 420)
# Unique values in order
sort(unique(sales))
# Top 3 largest
tail(sort(sales), 3)
# Bottom 3 smallest
head(sort(sales), 3)ตรวจสอบความเข้าใจอย่างรวดเร็ว
อาร์กิวเมนต์ใดควบคุมว่าค่า NA จะปรากฏที่ต้นรายการ ท้ายรายการ หรือถูกตัดออกเมื่อใช้ sort()
ประเด็นสำคัญของ sort()
ประเด็นสำคัญของ sort():
- ใช้
sort(x)สำหรับการเรียงจากน้อยไปมาก และsort(x, decreasing=TRUE)สำหรับการเรียงจากมากไปน้อย - เวกเตอร์ character จะเรียงตามตัวอักษร และโดยค่าเริ่มต้นจะคำนึงถึงตัวพิมพ์
- ควบคุมตำแหน่งของ NA ด้วย
na.last = TRUE/FALSE/NA sort()ไม่แก้ไขเวกเตอร์เดิม แต่จะคืนเวกเตอร์ใหม่เสมอ- ใช้
tail(sort(x), n)หรือhead(sort(x), n)เพื่อหาค่า N อันดับแรกหรือ N อันดับสุดท้าย sort.int()เป็นรูปแบบที่เร็วกว่าเมื่อใช้กับเวกเตอร์ numeric/integer
x <- c(3, 1, NA, 5, 2, NA, 4)
cat('Ascending (no NAs):', sort(x), '\n')
cat('Descending (NAs last):', sort(x, decreasing = TRUE, na.last = TRUE), '\n')คำถามที่พบบ่อย
บทเรียน “การเรียงเวกเตอร์ด้วย sort()” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเรียงเวกเตอร์ด้วย sort()” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเรียงเวกเตอร์ด้วย sort()”
เรียงเวกเตอร์ตัวเลขและอักขระจากน้อยไปมากหรือมากไปน้อย คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การเรียงเวกเตอร์ด้วย sort()” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม
ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเรียงเวกเตอร์ด้วย sort()
- order() สำหรับการจัดลำดับที่ยืดหยุ่น
- การจัดอันดับค่าด้วย rank()
- การเรียงดาต้าเฟรมตามคอลัมน์