ประเภทของข้อมูล (data structure) ต่างๆ ใน R

ในการใช้งาน R เราจำเป็นต้องเข้าใจถึงประเภทข้อมูล หรือ data structure พื้นฐานของ R ก่อนครับ ซึ่งก็มีหลายประเภทแต่หลักๆ คือ

  • เวกเตอร์ (vector) ซึ่งจะเก็บข้อมูลประเภทเดียวกันแบบมีลำดับ (ordered)
  • ลิสต์ (list) เก็บข้อมูลได้มากกว่าหนึ่งประเภท
  • ดาต้า เฟรม (data frame) เก็บข้อมูลลักษณะคล้ายๆ กับตาราง โดยมีแถวและคอลัมน์ ซึ่งข้อมูลสามารถมีมากกว่า 1 ประเภทได้
  • เมทริกซ์ (matrix) เก็บข้อมูลลักษณะตารางเช่นเดียวกับ ดาต้า เฟรม แต่ส่วนใหญ่จะเป็นประเภทตัวเลขอย่างเดียว

ในบทความนี้ผมจะแสดงตัวอย่างการสร้างและใช้งานด้วยภาษา R ให้ดูครับ แต่ก่อนอื่นเรามารู้จักกับข้อมูลที่เราจะใช้ก่อนครับ ซึ่งเป็นข้อมูลลูกค้า (customer) ซึ่งมักจะเก็บในรูปแบบตาราง หรือที่เราเรียกว่าเป็นข้อมูลแบบมีโครงสร้าง (structured data) ครับ ตัวอย่างของข้อมูลประเภทนี้แสดงในตารางด้านล่างครับ

R.000

1. เวกเตอร์ (vector)

เวกเตอร์เป็นการเก็บข้อมูลประเภทเดียวกันทั้งหมด เช่น ข้อมูลประเภทตัวเลข (numeric) ข้อมูลประเภทข้อความ (text) เราสามารถสร้างเวกเตอร์ได้ด้วยฟังก์ชัน c( ) ซึ่งเป็นการนำข้อมูลต่างๆ มาเชื่อมกัน ตัวอย่างการสร้างเวกเตอร์ต่างๆ แสดงดังโค้ดด้านล่างครับ

> customer_id <- c("ID15101","ID15102","ID15103","ID15104")
> age <- c(48,50,51,23)
> gender <- c("FEMALE","MALE","FEMALE","FEMALE")
> income <- c(17546.0,30085.1,16575.4,20375.4)

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

> customer_id[2]
[1] "ID15102" // ผลการทำงานจะได้ค่า ID15102 แสดงออกมา

หรือถ้าต้องการดูค่าอายุและเพศของลูกค้าคนที่ 3 สามารถใช้คำสั่งดังนี้ครับ

> age[3]
[1] 51 // ผลการทำงานจะได้ค่า 51 แสดงออกมา
> gender[3]
[1] "FEMALE" // ผลการทำงานจะได้ค่า FEMALE แสดงออกมา

R.001
2. ลิสต์ (List)

ลิสต์จะต่างกับเวกเตอร์ตรงที่สามารถเก็บข้อมูลหลายๆ ประเภทได้พร้อมกันครับ ซึ่งเกิดจากการนำเวกเตอร์หลายๆ ตัวมาต่อกันเป็นลิสต์ครับ การสร้างลิสต์ใช้ฟังก์ชัน list() สำหรับการดูข้อมูลของลูกค้าแต่ละรายด้วยการใช้เวกเตอร์เราจะต้องระบุชื่อเวกเตอร์และตำแหน่งที่ต้องการซึ่งต้องพิมพ์ถึง 4 ครั้ง (ตามจำนวนเวกเตอร์ที่เก็บค่าต่างๆ ไว้ คือ customer_id, age, gender, income แต่ถ้าเราสร้างเป็นลิสต์ก็สามารถเรียกตัวแปรเดียวได้เลยครับ

ตัวอย่างการสร้างลิสต์สำหรับลูกค้าที่ชื่อว่า john_doe แสดงดังตัวอย่างด้านล่างนี้ครับ

> john_doe <- list(customer_id = customer_id[1],
                   age = age[1],
                   gender = gender[1],
                   income = income[1])

หลังจากรัน (execute) คำสั่งด้านบนแล้วตัวแปร john_doe จะเก็บค่าจากเวกเตอร์ต่างๆ ในการเรียกใช้งานสามารถทำได้ดังนี้ครับ

> john_doe
$customer_id
[1] "ID15101"

$age
[1] 48

$gender
[1] "FEMALE"

$income
[1] 17546

จากผลที่แสดงออกมาจะเห็นว่าชื่อของตัวแปรในลิสต์จะมีเครื่องหมาย $ นำหน้า ถ้าเราต้องการทราบรายได้ (income) ของลูกค้าคนนี้สามารถใช้คำสั่ง

> john_doe$income
[1]17546

R.002

3. ดาต้า เฟรม (Data frames)

ดาต้า เฟรม (data frame) เป็นการเก็บข้อมูลให้อยู่ในรูปแบบคล้ายกับตาราง ซึ่งมีแถว (row) และคอลัมน์ (column) ข้อมูลที่เก็บในดาต้า เฟรมไม่จำเป็นต้องเป็นประเภทเดียวกัน ในการสร้างดาต้า เฟรมจะใช้ฟังก์ชัน data.frame() ตัวอย่างของการสร้างดาต้า เฟรมซึ่งเก็บรายละเอียดของลูกค้าทั้งหมดแสดงดังในตัวอย่างต่อไปนี้

> customer <- data.frame(customer_id, age, gender, income)

ถ้าต้องการดูข้อมูลในดาต้า เฟรมทั้งหมดสามารถพิมพ์ชื่อของดาต้า เฟรมได้เลยครับ เช่น

> customer
  customer_id age gender  income
1 ID15101     48  FEMALE  17546.0
2 ID15102     50  MALE    30085.1
3 ID15103     51  FEMALE  16575.4
4 ID15104     23  FEMALE  20375.4

ถ้าต้องการดูรายละเอียดแค่บางส่วนสามารถใช้คำสั่งดังด้านล่างได้เลยครับ เป็นการเลือกดูอายุของลูกค้าคนที่ 1 เท่านั้นครับ

> customer[1,"age"]
[1] 48

หรือถ้าต้องการดูทั้งอายุและรายได้ของลูกค้าคนที่ 1 สามารถใช้คำสั่งด้านล่างได้เลยครับ

> customer[1,c("age","income")]
    age income
[1] 48  17546

R.003

4. เมทริกซ์ (Matrix)

เมทริกซ์ (Matrix) มีลักษณะการเก็บข้อมูลคล้ายๆ กับดาต้า เฟรม แต่ข้อมูลจะเป็นประเภทเดียวกันและเป็นประเภทตัวเลขเพื่อนำไปใช้ในการคำนวณต่างๆ ในการสร้างเมทริกซ์จะใช้ฟังก์ชัน matrix() ตัวอย่างของการสร้างเมทริกซ์แสดงดังในตัวอย่างต่อไปนี้

> data <- matrix(c(100,200,300,400,500,600,
                   700,800,900,1000,1100,1200,
                   1300,1400,1500,1600),
                   nrow=4, ncol=4)

จากคำสั่งด้านบนเป็นการสร้างเมทริกซ์ของตัวเลขที่มีจำนวน 4 แถวและ 4 คอลัมน์ เมื่อเรียกใช้งานจะได้ผลลัพธ์ดังแสดงในตัวอย่างด้านล่างนี้ครับ

> data
     [,1] [,2] [,3] [,4]
[1,]  100  500  900 1300
[2,]  200  600 1000 1400
[3,]  300  700 1100 1500
[4,]  400  800 1200 1600

ในการเรียกใช้งานสามารถระบุตำแหน่งได้เลยครับโดยเริ่มที่แถวก่อนและตามด้วยคอลัมน์ เช่น data[1,2] จะได้ค่า 500 ครับดังตัวอย่าง

> data[1,2]
[1] 500

และถ้าต้องการดูข้อมูลในแนวคอลัมน์ (column) สามารถใช้คำสั่งเช่น data[,1] เพื่อดูข้อมูลในคอลัมน์ที่ 1 ทั้งหมดดังตัวอย่างด้านล่างนี้ครับ

> data[,1]
[1] 100 200 300 400

และถ้าต้องการดูข้อมูลในแนวแถว (row) สามารถใช้คำสั่งเช่น data[1,] เพื่อดูข้อมูลในแถวที่ 1 ทั้งหมดดังตัวอย่างด้านล่างนี้ครับ

> data[1,]
[1]  100  500  900 1300

R.004

 

มาถึงจุดนี้ผมคิดว่าท่านผู้อ่านน่าจะมีพื้นฐานในการใช้งาน R ได้มากขึ้นแล้วครับ ^^

Leave a Reply

Your email address will not be published. Required fields are marked *