นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน

Our Shangri-La
Ico64
Kittisakdi Choomalee

ภาควิชาเวชศาสตร์ชุมชน คณะแพทยศาสตร์ มหาวิทยาลัยสงขลานครินทร์
เครือข่าย
สมาชิก · ติดตาม: 0 · ผู้ติดตาม: 16

อ่าน: 1226
ความเห็น: 1

ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: เดินไปเดินมา ๓ วัน กับ R # ๙ [C]

เงื่อนไขที่ทำให้ต้องเดินไปเดินมา

 

บันทึกที่เกี่ยวข้อง

 

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

 

ความเดิมตอนที่แล้ว

บันทึกที่แล้ว เราลองแทนค่าตำแหน่งแถวและสดมภ์จากข้อมูลของผู้ป่วยแต่ละคนเพื่อดึงข้อมูล factor ในตารางมา จากบรรทัดคำสั่ง

> tgnhdl[lipiddata$tgrow, lipiddata$nhdlcol]

 

และพบว่าผลลัพธ์ที่ได้มีจำนวนมาก ผมจึงไม่นำเสนอผลลัพธ์ที่ได้ให้ดู แต่เพื่อให้เห็นว่า หากเราแทนค่าแถวและสดมภ์เหมือนบรรทัดคำสั่งข้างต้นนั้น จะให้ผลลัพธ์อย่างไร เพื่อให้เป็นข้อมูลตัวอย่าง จึงทำการสุ่มข้อมูลแถวและสดมภ์ในตารางจากข้อมูลผู้ป่วยแต่ละคนมาจำนวน ๕ ราย

 

ความต่อ

 

เมื่อเราสุ่มข้อมูลผู้ป่วยมาจำนวน ๕ รายจากข้อมูลผู้ป่วยทั้งหมด ๑๐๐ รายในกรอบข้อมูล lipiddata เราลองแทนค่าข้อมูลแถวและสดมภ์เพื่อดูผลลัพธ์ที่ได้

 

เราเก็บข้อมูลที่สุ่มข้อมูลผู้ป่วยจำนวน ๕ รายไว้ในกรอบข้อมูล lipiddata2

> lipiddata2
    tg nhdl tgrow nhdlcol
47 747  131    21       1
21 377  181     9       2
30 275  278     5       4
86 439  239    11       3
14 445  131    11       1

 

เราแทนค่าข้อมูลแถวและสดมภ์

 

บรรทัดคำสั่ง

 

> tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol]
        100-149 150-199 250-299 200-249 100-149
730-759     4.4     3.3     6.3     6.1     4.4
370-399    12.7    12.4     5.7     7.9    12.7
250-279     4.2     1.3    12.9    13.6     4.2
430-459     1.7     4.1     4.7    11.6     1.7
430-459     1.7     4.1     4.7    11.6     1.7

 

ผลลัพธ์ที่ได้ควรจะออกมาแค่ ๕ ค่าเท่านั้น เพราะเรามีข้อมูลของผู้ป่วยแค่ ๕ คน แต่ผลลัพธ์ที่ได้มีมากถึง ๒๕ ค่าหรือ ๕ x ๕ = ๒๕ ค่า

 

จากผลลัพธ์ที่ได้ ข้อมูลแถวแสะสดมภ์ของผู้ป่วยทั้ง ๕ คนเป็น

> lipiddata2
    tg nhdl tgrow nhdlcol
47 747  131    21       1
21 377  181     9       2
30 275  278     5       4
86 439  239    11       3
14 445  131    11       1

 

ค่า factor จากตารางควรจะมี ๕ ค่าคือ

 

> tgnhdl[21,1]
[1] 4.4
 

> tgnhdl[9,2]
[1] 12.4
 

> tgnhdl[5,4]
[1] 12.9
 

> tgnhdl[11,3]
[1] 11.6
 

> tgnhdl[11,1]
[1] 1.7

 

หรือค่า factor ที่ควรจะได้มามี ๕ ค่าคือ ๔.๔, ๑๒.๔, ๑๒.๙, ๑๑.๖ และ ๑.๗

 

เราลองเปรียบเทียบค่า factor ที่ควรจะเป็นกับค่าที่ได้จากการแทนค่าข้อมูลของผู้ป่วยทั้ง ๕ ราย จากบรรทัดคำสั่ง

> tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol]
        100-149 150-199 250-299 200-249 100-149
730-759     4.4     3.3     6.3     6.1     4.4
370-399    12.7    12.4     5.7     7.9    12.7
250-279     4.2     1.3    12.9    13.6     4.2
430-459     1.7     4.1     4.7    11.6     1.7
430-459     1.7     4.1     4.7    11.6     1.7

 

เราตรวจสอบ class ของผลลัพธ์ที่ได้จากบรรทัดคำสั่ง tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol]

 

> class(tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol])
[1] "matrix"

 

เพื่อให้ท่านผู้อ่านที่รักทุกท่านได้เข้าใจใน method ของ matrix หรือเข้าใจการจัดการข้อมูลของ matrix ผมขอยกตัวอย่างการทำงานของ matrix มาให้ดูนะครับ

 

สมมติว่าเรามีข้อมูลเป็นตัวเลขเรียงลำดับตั้งแต่ ๑ - ๒๐ เราต้องการให้ข้อมูลทั้ง ๒๐ ค่านี้ (๑ - ๒๐) อยู่ในรูปของ matrix

 

ข้อมูล ๑-๒๐

> seq(1,20,1)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

 

ทำให้เป็น matrix ที่มี ๕ แถว ๔ สดมภ์ (๕ x ๔ = ๒๐)

> matrix(seq(1,20,1), nrow=5, ncol=4)
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20

 

จะเห็นว่าการเติมค่า (๑ - ๒๐) ลงใน matrix นั้นจะกระทำในแนวสดมภ์ก่อน คือ เติมค่าลงในสดมภ์แรกในทุกแถวก่อน หลังจากนั้นจะเติมค่าให้กับสดมภ์ที่ ๒ ในทุกแถว

 

ถ้าเราต้องการให้ matrix เติมค่าในแถวก่อนจะได้หรือเปล่า

ให้เราระบุตัวเลือก byrow=T

 

> matrix(seq(1,20,1), nrow=5, ncol=4, byrow=T)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
[4,]   13   14   15   16
[5,]   17   18   19   20

 

ค่าเริ่มต้นของฟังก์ชัน matrix() จะกำหนดให้ตัวเลือก byrow=FALSE หรือให้เติมค่าในแนวสดมภ์

 

ดังนั้นผลลัพธ์ที่ได้จากบรรทัดคำสั่ง tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol] มี class เป็น matrix และการจัดข้อมูลลงใน matrix จะเป็นการเติมค่าในแนวสดมภ์

 

เรามาพิจารณาผลลัพธ์จากบรรทัดคำสั่ง tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol] อีกครั้งครับ

 

> tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol]
        100-149 150-199 250-299 200-249 100-149
730-759     4.4     3.3     6.3     6.1     4.4
370-399    12.7    12.4     5.7     7.9    12.7
250-279     4.2     1.3    12.9    13.6     4.2
430-459     1.7     4.1     4.7    11.6     1.7
430-459     1.7     4.1     4.7    11.6     1.7

 

ค่า factor ค่าแรกคือ ๔.๔ นั้นถูกต้องอยู่ในตำแหน่งที่ ๑ ส่วนค่าที่ ๒ คือ ๑๒.๔ นั้นอยู่ในตำแหน่ง [2,2] ของผลลัพธ์ ... และเมื่อดูทั้ง ๕ ค่า พบว่า ค่าที่ควรจะเป็นนั้นอยู่ตรงแนวเฉียงจากบนซ้ายมาล่างขวาของผลลัพธ์

 

ดังนั้นเมื่อเราใช้บรรทัดคำสั่ง

> tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol]

 

R จะทำการแทนค่าแถวและสดมภ์ดังนี้

 

จากข้อมูลของผู้ป่วย ๕ ราย

 

> lipiddata2
    tg nhdl tgrow nhdlcol
47 747  131    21       1
21 377  181     9       2
30 275  278     5       4
86 439  239    11       3
14 445  131    11       1

 

R จะทำการแทนค่าแถวและสดมภ์เป็น

 

[21,1] [21,2] [21,4] [21,3] [21,1]
[9,1]   [9,2]  [9,4]   [9,3]   [9,1]
[5,1]   [5,2]  [5,4]   [5,3]   [5,1]
[11,1] [11,2] [11,4] [11,3] [11,1]
[11,1] [11,2] [11,4] [11,3] [11,1]

  
หรือได้ค่าเป็น

 

4.4     3.3     6.3     6.1     4.4
12.7    12.4     5.7     7.9    12.7
4.2     1.3    12.9    13.6     4.2
1.7     4.1     4.7    11.6     1.7
1.7     4.1     4.7    11.6     1.7

 

เราลองตรวจสอบข้อมูลในสดมภ์แรกดูว่ามื่อแทนค่าตำแหน่งแถวและสดมภ์ของตาราง factor จะได้ค่าเหมือนสดมภ์แรกหรือไม่

 

> tgnhdl[21,1]
[1] 4.4

> tgnhdl[9,1]
[1] 12.7

> tgnhdl[5,1]
[1] 4.2

> tgnhdl[11,1]
[1] 1.7

> tgnhdl[11,1]
[1] 1.7

 

ดังนั้นแถวแรกของผลลัพธ์ก็คือค่าแถวในตาราง factor ของผู้ป่วยคนแรกจับคู่กับสดมภ์ในตาราง factor ของผู้ป่วยทุกคน

และเช่นเดียวกับแถวที่ ๒ ของผลลัพธ์จะเป็นค่าแถวในตาราง factor ของผู้ป่วยคนที่ ๒ จับคู่กับสดมภ์ในตาราง factor ของผู้ป่วยทุกคน

....

 

คำถามคือเราจะดึงค่า factor ที่ถูกต้องจากผลลัพธ์ของบรรทัดคำสั่ง tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol] มาได้อย่างไร

 

อิอิอิ

 

เราเอง

 

เพลง: ส่งเพลงนี้คืนมาให้ฉันที
ศิลปิน: เอ๊ะ จิรากร

 

  GMM GRAMMY OFFICIAL: Youtube

 

 

หมวดหมู่บันทึก: เรื่องทั่วไป
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 30 พฤษภาคม 2557 16:58 แก้ไข: 28 เมษายน 2563 17:33 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 ทดแทน, Ico24 โอ๋-อโณ, และ Ico24 ใยมะพร้าวน้องใยไหม.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

น้าฟังเพลงแนวนี้ด้วยหรอครับ น่ารักเชียว อิอิ

 

เอิ้ก เอิ้ก

 

"ใจสั่งมา"

คุณต้องทำการเข้าระบบก่อนแสดงความเห็น