ความเห็น: 2
ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: Titanic ฉบับ rate R # ๓ [C]
บันทึกที่เกี่ยวข้อง
- ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: Titanic ฉบับ rate R
- ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: Titanic ฉบับ rate R # ๒
ครั้งที่แล้วเราค้างไว้กับคำถามที่ว่าสิ่งที่เราต้องการก็คือข้อมูลของแต่ละคน หรือข้อมูลที่บ่งบอกถึงลักษณะของผู้โดยสารแต่ละคนไม่ใช่ข้อมูลที่สรุปรวมเอาไว้เป็นตารางอย่างที่เป็นอยู่
แต่จะทำอย่างไรให้ได้ข้อมูลออกมาอย่างที่เราต้องการ
Tiatanic เป็นวัตถุที่มี class เป็น Table และเป็นวัตถุชนิด array ใน R
เราลองใช้ฟังก์ชัน sapply() ที่เคยใช้มาในตัวอย่างข้อมูลอื่น ๆ เพื่อดึงข้อมูลออกมา ลองมาดูผลลัพธ์กันนะครับ
บรรทัดคำสั่ง
> sapply(Titanic, "[", 1)
[1] 0 0 35 0 0 0 17 0 118 154 387 670 4 13 89 3 5 11 13 0 1 13 14 0 57 14 75 192 140 80 76 20
> class(sapply(Titanic, "[", 1))
[1] "numeric"
เราจะพบว่าผลลัพธ์ของบรรทัดคำสั่งข้างต้นให้ผลลัพธ์ออกมาเป็นค่าตัวเลข ๓๒ ค่า เมื่อตรวจสอบผลลัพธ์ที่ได้ พบว่าผลลัพธ์ที่ได้มี class เป็นตัวเลข
จากบรรทัดคำสั่ง
> dim(Titanic)
[1] 4 2 2 2
เมื่อเอาตัวเลขทั้งหมดมาคูณกันจะได้ผลลัพธ์เป็น
> 4*2*2*2
[1] 32
ผลลัพธ์ที่ได้คือ ๓๒ ซึ่งเท่ากับตัวเลขผลลัพธ์จากบรรทัดคำสั่ง sapply(Titanic, "[", 1) และเมื่อเราลองเอาตัวเลขไปเทียบกับข้อมูลในตารางที่เกิดจากการเรียกดูข้อมูล Titanic แล้วจะพบว่า ตัวเลขทั้งหมดคือค่าแต่ละค่าทั้งหมดในตารางทั้ง ๔ ตารางข้อมูล Titanic
หรือนั่นคือข้อมูลตัวเลขจากบรรทัดคำสั่ง Titanic (ดูข้อมูลในบันทึกก่อนหน้านี้) หรือเป็นข้อมูลแต่ละกลุ่มตามเงื่อนไขของทั้ง ๔ ตัวแปร เช่นผู้โดยสารชั้น First Class ที่เป็นเด็กผู้ชายที่รอดชีวิต ผู้โดยสารชั้น First Class ที่เป็นเด็กผู้ชายที่เสียชีวิต ผู้โดยสารชั้น First Class ที่เป็นเด็กผู้หญิงที่รอดชีวิต ผู้โดยสารชั้น First Class ที่เป็นเด็กผู้ชายที่เสียชีวิต เป็นต้น
ตัวอย่างข้อมูลของตาราง
> Titanic[1,,,]
, , Survived = No
Age
Sex Child Adult
Male 0 118
Female 0 4
, , Survived = Yes
Age
Sex Child Adult
Male 5 57
Female 1 140
เราลองใช้ฟังก์ชัน data.frame() เปลี่ยนให้ Titanic เปลี่ยนเป็นวัตถุชนิด data frame
บรรทัดคำสั่ง
> data.frame(Titanic)
Class Sex Age Survived Freq
1 1st Male Child No 0
2 2nd Male Child No 0
3 3rd Male Child No 35
4 Crew Male Child No 0
5 1st Female Child No 0
6 2nd Female Child No 0
7 3rd Female Child No 17
8 Crew Female Child No 0
9 1st Male Adult No 118
10 2nd Male Adult No 154
11 3rd Male Adult No 387
12 Crew Male Adult No 670
13 1st Female Adult No 4
14 2nd Female Adult No 13
15 3rd Female Adult No 89
16 Crew Female Adult No 3
17 1st Male Child Yes 5
18 2nd Male Child Yes 11
19 3rd Male Child Yes 13
20 Crew Male Child Yes 0
21 1st Female Child Yes 1
22 2nd Female Child Yes 13
23 3rd Female Child Yes 14
24 Crew Female Child Yes 0
25 1st Male Adult Yes 57
26 2nd Male Adult Yes 14
27 3rd Male Adult Yes 75
28 Crew Male Adult Yes 192
29 1st Female Adult Yes 140
30 2nd Female Adult Yes 80
31 3rd Female Adult Yes 76
32 Crew Female Adult Yes 20
เราจะพบว่าฟังก์ชัน data.frame() มีวิธี (method) สำหรับจัดการกับข้อมูลที่มี class เป็น Table ด้วย
แต่เราก็พบอีกว่าฟังก์ชัน data.frame() นั้นจัดการข้อมูลให้เราไม่ได้ตามที่เราต้องการนั่นคือ data frame ที่ได้ยังเป็นข้อมูลสรุปของข้อมูลแต่ละกลุ่มเหมือนผลลัพธ์ที่ได้จากบรรทัดคำสั่ง sapply(Titanic, "[", 1)
เพียงแต่บรรทัดคำสั่ง sapply(Titanic, "[", 1) จะให้ผลลัพธ์เฉพาะส่วนที่เป็นตัวเลขสรุปข้อมูลแต่ละกลุ่ม (๓๒ กลุ่ม)
แต่ผลลัพธ์จากฟังก์ชัน data.frame() นั้นจะมร้างข้อมูลที่ประกอบไปด้วยตัวแปร ๕ ตัวแปร ซึ่งมีตัวแปรเพิ่มขึ้นมาอีก ๑ ตัวแปรจากเดิมที่มีตัวแปรทั้งหมด ๔ ตัวแปร (Class, Sex, Age, Survived) ตัวแปรที่เพิ่มขึ้นมาอีกคือตัวแปร Freq ซึ่งเป็นตัวแปรที่มีข้อมูลจำนวนซ้ำของข้อมูลแต่ละกลุ่ม (เช่นผู้โดยสารชั้น First Class ที่เป็นเด็กผู้ชายที่รอดชีวิต ผู้โดยสารชั้น First Class ที่เป็นเด็กผู้ชายที่เสียชีวิต ผู้โดยสารชั้น First Class ที่เป็นเด็กผู้หญิงที่รอดชีวิต ผู้โดยสารชั้น First Class ที่เป็นเด็กผู้ชายที่เสียชีวิต เป็นต้น)
ผลลัพธ์ที่ได้จากฟังก์ชัน data.frame() นั้นไม่ใช่สิ่งที่เราต้องการแต่เราสามารถที่จะนำผลลัพธ์ที่ได้จากฟังก์ชัน data.frame() ไปใช้ในการสร้างข้อมูลที่เป็นข้อมูลที่เป็นลักษณะของผู้โดยสารแต่ละคน (ไม่ใช่ข้อมูลสรุปรวม)
แนวทางในการสร้างข้อมูลก็คือการสร้างข้อมูลในกลุ่มนั้น ๆ ขึ้นมาอีกเป็นจำนวนเท่ากับจำนวนซ้ำของของมูลในกลุ่มนั้น ๆ หรือเท่ากับค่าที่เก็บอยู่ในตัวแปร Freq
ในโปรแกรมวิเคราะห์ข้อมูลอย่างโปรแกรม Stata มีฟังก์ชั่น expand สำหรับจัดการข้อมูลตามความต้องการข้างต้นได้ สำหรับ R นั้นคงต้องรื้อ ๆ หาข้อมูลดูก่อนครับ
อิอิอิ
แต่ไม่ใช่รื้อแบบรื้อของในบ้านอย่างคุณท้าวฯ นะครับ และไม่ถึงกับแกะอย่างลุงทดแทน หรือไม่ต้องเดินทางไปไกลอย่างน้อง ๒ ใย
อิอิอิ
เราเอง
เพลง:
ศิลปิน:
27 เมษายน 2557 09:20
#97830
ช่วงนี้เป็นนักเดินทางกันเยอะครับ ถ้าลองตรวจสอบหลายๆ คนให้ดิ อิอิ
บันทึกก็น่าจะห่างหายลงไปบ้าง ตามช่วงเวลาของปี อิอิ
ส่วนน้ายังล่องเรือตามหา R ไม่หยุดเสียที อย่าให้ล่มแบบที่เกาหลีนะครับ
เอิ้ก เอิ้ก
"ใจสั่งมา"