0Pricing
R Academy · บทเรียน

การแปลงชนิดตรรกะและอักขระ

แปลงระหว่างชนิดตรรกะ อักขระ และตัวเลขด้วย as.logical() และ as.character()

การแปลงชนิดตรรกะและอักขระ เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

การแปลงระหว่างชนิดข้อมูล

R มีฟังก์ชัน as.*() สำหรับแปลงระหว่างชนิดข้อมูลพื้นฐานทั้งหมด บทเรียนนี้ครอบคลุมการแปลงระหว่างชนิด logical, character และ numeric ซึ่งเป็นการแปลงไปกลับที่พบได้บ่อยที่สุดในการทำความสะอาดข้อมูล

# Quick overview of as.*() functions
cat('as.logical(1):    ', as.logical(1), '
')     # TRUE
cat('as.numeric(TRUE): ', as.numeric(TRUE), '
')  # 1
cat('as.character(3.14):', as.character(3.14), '
') # "3.14"
cat('as.logical("TRUE"):', as.logical('TRUE'), '
') # TRUE

แปลงตัวเลขเป็นตรรกะ

การแปลงตัวเลขเป็นค่าตรรกะ: 0 จะกลายเป็น FALSE ส่วนจำนวนที่ไม่ใช่ศูนย์จะกลายเป็น TRUE กฎนี้ใช้ได้ทั้งกับจำนวนเต็มและ double

cat('as.logical(0):    ', as.logical(0), '
')     # FALSE
cat('as.logical(1):    ', as.logical(1), '
')     # TRUE
cat('as.logical(-5):   ', as.logical(-5), '
')    # TRUE (non-zero)
cat('as.logical(0.001):', as.logical(0.001), '
') # TRUE (non-zero)
cat('as.logical(0L):   ', as.logical(0L), '
')    # FALSE
cat('as.logical(3L):   ', as.logical(3L), '
')    # TRUE

แปลงตรรกะเป็นตัวเลข

TRUE จะแปลงเป็น 1 และ FALSE จะแปลงเป็น 0 การแปลงนี้เป็นพื้นฐานของรูปแบบการเขียน R หลายอย่าง เช่น การใช้ sum() เพื่อนับค่า TRUE หรือใช้ mean() เพื่อคำนวณสัดส่วน

cat('as.numeric(TRUE):  ', as.numeric(TRUE), '
')   # 1
cat('as.numeric(FALSE): ', as.numeric(FALSE), '
')  # 0
cat('as.integer(TRUE):  ', as.integer(TRUE), '
')   # 1L

# Practical use: count TRUEs by summing
passed <- c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
cat('Passed count:', sum(as.numeric(passed)), '
')  # 4
cat('Pass rate:   ', mean(passed) * 100, '%
')      # 66.67%

as.logical() จากสตริง

as.logical('TRUE') และ as.logical('FALSE') จะแปลงรูปแบบที่เขียนเป็นสตริง R ยังยอมรับ 'T' และ 'F' เป็นคำย่อด้วย ส่วนค่าอื่น ๆ (รวมถึง 'true' ที่ใช้ตัวพิมพ์เล็ก) จะคืนค่าเป็น NA

cat('as.logical("TRUE"):  ', as.logical('TRUE'), '
')   # TRUE
cat('as.logical("FALSE"): ', as.logical('FALSE'), '
')  # FALSE
cat('as.logical("T"):     ', as.logical('T'), '
')      # TRUE
cat('as.logical("F"):     ', as.logical('F'), '
')      # FALSE
cat('as.logical("yes"):   ', as.logical('yes'), '
')    # NA (not recognised)
cat('as.logical("true"):  ', as.logical('true'), '
')   # NA (case-sensitive!)

แปลงตัวเลขเป็นอักขระ

as.character(x) แปลงตัวเลขเป็นรูปแบบสตริงของตัวเลขนั้น ซึ่งมีประโยชน์สำหรับการสร้างป้ายกำกับ รหัสประจำตัว หรือเมื่อต้องการนำตัวเลขไปต่อรวมกับสตริง

num_val <- 3.14159
char_val <- as.character(num_val)
cat('as.character(3.14159):', char_val, '
')  # '3.14159'
cat('class:', class(char_val), '
')           # character

# Building labels
ids <- 1:5
labels <- paste0('Item_', as.character(ids))
cat('Labels:', labels, '
')

แปลงอักขระเป็นตัวเลข

as.numeric('3.14') แปลงสตริงเป็นค่า double หากไม่สามารถตีความสตริงเป็นตัวเลขได้ R จะคืนค่า NA พร้อมคำเตือน โปรดตรวจสอบอินพุตก่อนการแปลงในโค้ดที่ใช้งานจริงเสมอ

cat('as.numeric("3.14"):  ', as.numeric('3.14'), '
')   # 3.14
cat('as.numeric("100"):   ', as.numeric('100'), '
')    # 100
cat('as.numeric("-5.5"):  ', as.numeric('-5.5'), '
')   # -5.5
cat('as.numeric("abc"):   ', as.numeric('abc'), '
')    # NA with warning
cat('as.numeric("1e3"):   ', as.numeric('1e3'), '
')    # 1000 (sci notation OK)

แปลงตรรกะเป็นอักขระ

as.character(TRUE) จะสร้างสตริง 'TRUE' วิธีนี้มีประโยชน์เมื่อต้องการใส่ค่าตรรกะลงในเอาต์พุตข้อความ การส่งออกไฟล์ หรือการต่อรวมสตริง

flag_t <- TRUE
flag_f <- FALSE

cat('as.character(TRUE): ', as.character(flag_t), '
')  # 'TRUE'
cat('as.character(FALSE):', as.character(flag_f), '
')  # 'FALSE'
cat('class:', class(as.character(flag_t)), '
')         # character

# In paste()
message <- paste('System status:', as.character(flag_t))
cat(message, '
')

การแปลงไปกลับ

การแปลงส่วนใหญ่สามารถย้อนกลับได้ (การแปลงไปกลับ) แต่บางครั้งอาจสูญเสียข้อมูล: numeric -> character -> numeric อาจสูญเสียความละเอียด ขึ้นอยู่กับรูปแบบที่ใช้เขียนตัวเลขเป็นสตริง

original <- 3.141592653589793
char_version <- as.character(original)
back_to_num <- as.numeric(char_version)

cat('Original:  ', original, '
')
cat('As string: ', char_version, '
')
cat('Back:      ', back_to_num, '
')
cat('Identical?:', identical(original, back_to_num), '
')
cat('Equal?:    ', original == back_to_num, '
')

การแปลงเวกเตอร์ที่มีแหล่งที่มาต่างกัน

เมื่อใช้ as.numeric() กับเวกเตอร์อักขระ สมาชิกแต่ละตัวจะถูกแปลงแยกจากกัน สมาชิกที่ไม่สามารถแยกวิเคราะห์ได้จะกลายเป็น NA นี่เป็นวิธีมาตรฐานในการทำความสะอาดข้อมูลที่ดูเหมือนตัวเลขซึ่งอ่านมาจากไฟล์ CSV

# Simulated data from CSV (all read as character)
raw_data <- c('42', '37.5', 'N/A', '55', '', '28.0')
cat('Raw character data:', raw_data, '
')

numeric_data <- suppressWarnings(as.numeric(raw_data))
cat('Converted:         ', numeric_data, '
')  # 42 37.5 NA 55 NA 28
cat('NA count:          ', sum(is.na(numeric_data)), '
')

การแปลงตรรกะใน ifelse()

การใช้ as.numeric() ร่วมกับ ifelse() หรือการคูณโดยตรงด้วยเวกเตอร์ตรรกะ เป็นรูปแบบการเขียนที่พบได้บ่อยสำหรับการให้คะแนนตามเงื่อนไขหรือการสร้างคุณลักษณะในการวิเคราะห์ข้อมูล

# Score: 1 for correct, 0 for incorrect
quiz_answers <- c('A', 'C', 'B', 'D', 'B')
correct      <- c('A', 'B', 'B', 'D', 'C')

is_correct <- quiz_answers == correct
cat('Correct:  ', is_correct, '
')
cat('As 0/1:   ', as.numeric(is_correct), '
')
cat('Score:    ', sum(is_correct), '/', length(is_correct), '
')

สรุปการแปลง

สรุปการแปลงค่าตรรกะและอักขระที่สำคัญมีดังนี้:

  • as.logical(0) → FALSE; ค่าที่ไม่ใช่ศูนย์ → TRUE
  • as.logical('TRUE'/'T') → TRUE; แยกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่; ค่าอื่น ๆ → NA
  • as.numeric(TRUE) → 1; as.numeric(FALSE) → 0
  • as.character(x) → รูปแบบสตริงของ x
  • as.numeric('3.14') → 3.14; สตริงที่ไม่ใช่ตัวเลข → NA พร้อมคำเตือน
# All conversions in one snippet
cat('logical->num:  ', as.numeric(c(TRUE, FALSE)), '
')
cat('num->logical:  ', as.logical(c(0, 1, -1, 0.5)), '
')
cat('char->num:     ', suppressWarnings(as.numeric(c('5', 'abc', '3.1'))), '
')
cat('char->logical: ', as.logical(c('TRUE', 'FALSE', 'yes')), '
')
cat('logical->char: ', as.character(c(TRUE, FALSE)), '
')

ตรวจสอบอย่างรวดเร็ว

as.numeric(TRUE) + as.numeric(FALSE) จะได้ผลลัพธ์เป็นอะไรใน R

ทบทวน: การแปลงค่าตรรกะและอักขระ

ยอดเยี่ยมครับ/ค่ะ! ประเด็นสำคัญจากบทเรียนนี้มีดังนี้:

  • as.logical(0) → FALSE; ค่าที่ไม่ใช่ศูนย์ → TRUE; 'TRUE'/'T' → TRUE
  • as.numeric(TRUE) → 1; as.numeric(FALSE) → 0
  • as.character(x) แปลงค่าใด ๆ เป็นรูปแบบสตริงของค่านั้น
  • as.numeric('3.14') แยกวิเคราะห์สตริงตัวเลข; สตริงที่ไม่ถูกต้อง → NA
  • as.logical('true') เป็น NA — การจับคู่แยกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ('TRUE' ใช้งานได้)
  • การแปลงส่วนใหญ่ย้อนกลับได้ ให้ใช้ suppressWarnings() เมื่อแปลงคอลัมน์ที่คาดว่าจะมีรายการซึ่งทำให้เกิด NA
# Practical: parse a messy survey score column
raw_scores <- c('8', '7', 'N/A', '9', 'skip', '6')
numeric_scores <- suppressWarnings(as.numeric(raw_scores))
cat('Parsed:', numeric_scores, '
')
cat('Valid responses:', sum(!is.na(numeric_scores)), '
')
cat('Average score:  ', round(mean(numeric_scores, na.rm = TRUE), 2), '
')

คำถามที่พบบ่อย

บทเรียน “การแปลงชนิดตรรกะและอักขระ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การแปลงชนิดตรรกะและอักขระ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การแปลงชนิดตรรกะและอักขระ”

แปลงระหว่างชนิดตรรกะ อักขระ และตัวเลขด้วย as.logical() และ as.character() คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การแปลงชนิดตรรกะและอักขระ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม

ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ภาพรวมระบบชนิดข้อมูลของ R
  2. การแปลงระหว่างชนิดข้อมูลตัวเลข
  3. การแปลงชนิดตรรกะและอักขระ
  4. ข้อควรระวังและแนวทางปฏิบัติที่ดีในการบังคับชนิดข้อมูล
← กลับไปที่ R Academy