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

Our Shangri-La
Ico64
Kittisakdi Choomalee

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

อ่าน: 1004
ความเห็น: 0

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

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

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

 

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

 

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

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

 

ผลลัพธ์ที่ออกมาจากการแทนค่านั้นเป็น matrix ที่มีขนาด n x n เมื่อ n จำนวนข้อมูล

 

การจัดค่า/ เติมค่าลงไปใน matrix ของ R นั้นค่าเริ่มต้นจะเป็นการเติมค่าในแนวสดมภ์ (ทุกแถว) โดยเริ่มจากแถวแรกของสดมภ์แรกก่อนไปจนถึงแถวสุดท้ายของสดมภ์แรก แล้วเริ่มเติมคี่าลงในแถวแรกของสดมภ์ที่ ๒ ไปอย่างนี้จนถึงคีาสุดท้ายของ matrix คือ แถวสุดท้ายของสดมภ์สุดท้าย หรือค่าที่ n x n

 

ความต่อมา

 

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

 

และแถวที่จะให้ค่า factor ไปอยู่แนวเดียวกันคือแถวที่ ๑

 

ไม่ต้องคิดมากครับ

 

หลักการง่าย ๆ ก็คือเราจะให้ผลลัพธ์จากการแทนค่าแถวและสดมภ์ของผู้ป่วยอยู่ในรูปของmatrix ที่ไม่ใช่ n x n ครับ

เราต้องการขยับค่า factor ค่าที่ ๒ ให้ขยับขึ้นไป ๑ ตำแหน่ง ค่า factor ค่าที่ ๓ ขยับขึ้นไปอีก ๒ ตำแหน่ง ค่า factor ค่าที่ ๔ ขยับขึ้นไปอีก ๓ ตำแหน่ง .....

 

นั่นคือเราจะให้ matrix ของผลลัพธ์มีขนาดเป็น n+1 x n

 

matrix ใหม่ที่เรากำหนดให้จะเป็นขนาด หรือมีจำนวนข้อมูลมากกว่าข้อมูลจากผลลัพธ์จริง

 

ข้อควรระวัง

 

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

 

ดังนั้นผลลัพธ์สุดท้ายเราจะได้ค่าซ้ำ

 

เช่นจากข้อมูลตัวอย่างของผู้ป่วยจำนวน ๕ คน จะมีจำนวนข้อมูลทั้งหมด ๕ x ๕ = ๒๕ ข้อมูล แต่ matrix ที่เราจะบรรจุค่าผลลัพธ์ลงไปนั้นมีขนาดหรือมีจำนวนข้อมูลเท่ากับ (๕+๑) x ๕ หรือเท่ากับ ๖ x ๕ = ๓๐ ข้อมูล

 

ตัวอย่าง

> 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

 

matrix ขนาด ๖ x ๕

> matrix6x5 <- NA

> matrix(matrix6x5, nrow=6, ncol=5)
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA

 

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

 

เช่น

 

> matrix(tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol], nrow=6, ncol=5)
     [,1] [,2] [,3] [,4] [,5]
[1,]  4.4 12.4 12.9 11.6  1.7
[2,] 12.7  1.3  4.7 11.6  4.4
[3,]  4.2  4.1  4.7  4.4 12.7
[4,]  1.7  4.1  6.1 12.7  4.2
[5,]  1.7  6.3  7.9  4.2  1.7
[6,]  3.3  5.7 13.6  1.7  1.7
Warning message:
In matrix(tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol], nrow = 6,  :
  data length [25] is not a sub-multiple or multiple of the number of rows [6]

 

จากตัวอย่าง ๕ ค่าสุดท้ายใน matrix คือค่าที่วนซ้ำจากค่า ๑ - ๕ แรกของ matrix

 

ดังนั้นเพื่อไม่ให้ R นำค่ามาบรรจุลงไปใน matrix ซ้ำในกรณีที่จำนวนข้อมูลกับขนาด matrix ไม่เท่ากัน (matrix มีขนาดมากกว่าจำนวนข้อมูล) เราจำเป็นต้องระบุตำแหน่งของข้อมูลที่เราจะบรรจุ (แทนที่) ในตำแหน่งของ matrix ไปด้วย

 

เช่นข้อมูลตัวอย่างจาก lipiddata2

> 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

 

ตำแหน่งของ matrix ที่เราจะแทนค่าคือตำแหน่งที่ ๑ - ๒๕ นั่นเอง

 

> matrix6x5 <- NA
> matrix6x5 <- matrix(matrix6x5, nrow=6, ncol=5)
> matrix6x5
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA

> matrix6x5[1:25] <- tgnhdl[lipiddata2$tgrow, lipiddata2$nhdlcol]
> matrix6x5
     [,1] [,2] [,3] [,4] [,5]
[1,]  4.4 12.4 12.9 11.6  1.7
[2,] 12.7  1.3  4.7 11.6   NA
[3,]  4.2  4.1  4.7  4.4   NA
[4,]  1.7  4.1  6.1 12.7   NA
[5,]  1.7  6.3  7.9  4.2   NA
[6,]  3.3  5.7 13.6  1.7   NA

 

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

 

ปัญหาต่อมาคือเราจะดึงข้อมูลแถวที่ ๑ ของ matrix ออกมาได้อย่างไร

 

อิอิอิ

 

เราเอง

 

เพลง: คืนฝนตก
ศิลปิน: รุ่งเพชร แหลมสิงห์

 

 

 

หมวดหมู่บันทึก: เรื่องทั่วไป
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 02 มิถุนายน 2557 00:25 แก้ไข: 28 เมษายน 2563 17:33 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 Monly, Ico24 Our Shangri-La, และ 4 คนอื่น.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

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