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

Our Shangri-La
Ico64
Kittisakdi Choomalee

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

อ่าน: 1388
ความเห็น: 2

รวมกันเมื่อฉันต่างกับเธอ 5: ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป [C]

รวมข้อมูล (append) จากแฟ้มข้อมูล ๒ แฟ้มข้อมูลที่มีจำนวนตัวแปร/ ชื่อตัวแปรที่ต่างกันใน R

หลังจากที่หลายคนลาหยุดงานเพื่อไปร่วมพิธีเนื่องในวันตรุษจีนและหยุดงานหลังจากนั้น ๑ วันเนื่องในวันหยุดพิเศษของจังหวัดชายแดนใต้ที่ประกาศหยุดในวันที่ไม่จำเป็นต้องหยุด แต่วันที่จำเป็นต้องหยุดต้องลาหยุดเอา

-----------------------------------------------

ในกรณีที่แฟ้มข้อมูลทั้งสองแฟ้มข้อมูลที่จะนำข้อมูลมารวมกัน มีจำนวนตัวแปรไม่เท่ากันและเราเลือกที่จะเก็บข้อมูลทั้งหมดทุกตัวแปรที่มีจากทั้งสองแฟ้มข้อมูล หรือจากข้อมูลตัวอย่างจากบันทึกที่ ๒ นั้น ท้ายสุดแล้วตัวแปรทั้งหมดที่ได้จากการรวมแฟ้มข้อมูลทั้งสองเข้าด้วยกันจะมีจำนวนทั้งสิ้น ๑๐ ตัวแปร

 

แต่บางตัวแปร (ที่มีเฉพาะในแฟ้มข้อมูลที่ ๑ หรือมีเฉพาะในแฟ้มข้อมูลที่ ๒) ในบางระเบียนจะเป็นข้อมูลว่าง หรือเป็น missing value

 

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

 

หรือนั่นคือต้องสร้างตัวแปรที่มีอยู่เฉพาะในแฟ้มข้อมูลที่ ๑ ให้กับแฟ้มข้อมูลที่ ๒ และสร้างตัวแปรที่มีอยู่เฉพาะในแฟ้มข้อมูลที่ ๒ ให้กับแฟ้มข้อมูลที่ ๑

 

ตัวอย่างข้อมูลที่จะนำมารวมกันเก็บไว้ในวัตถุชื่อ data1 และ data2

> data1 <- read.csv("2dif_var_f1.csv")
> data2 <- read.csv("2dif_var_f2.csv")
> data1
   id age sex a1 a2 a3 a9
1   1  25   1  1  1  1  2
2   2  24   1  1  3  1  2
3   3  32   2  4  2  1  1
4   4  26   1  1  4  2  2
5   5  41   2  2  2  2  1
6   6  45   1  3  1  1  1
7   7  24   2  2  3  1  2
8   8  73   2  2  4  2  2
9   9  35   1  4  5  1  1
10 10  22   2  4  2  2  1

> data2
   id age sex a1 a2 a3 a4 a5 a6
1  21  40   1  4  3  2  2  1  2
2  22  32   2  2  2  1  2  1  2
3  23  25   2  4  3  1  2  2  1
4  24  28   2  1  3  2  1  1  1
5  25  31   1  3  4  2  1  1  2
6  26  44   1  4  2  1  2  2  1
7  27  28   2  2  2  1  2  2  2
8  28  32   1  3  3  1  1  1  1
9  29  45   2  3  1  2  1  1  1
10 30  66   2  4  1  2  1  1  1

 

ขั้นแรกหาว่ามีตัวแปรไหนมีเฉพาะในแฟ้มข้อมูลที่ ๑ (data1) ด้วยฟังก์ชัน setdiff()

> setdiff(names(data1),names(data2))
[1] "a9"

หาว่ามีตัวแปรไหนมีเฉพาะในแฟ้มข้อมูลที่ ๒ (data2) ด้วยฟังก์ชัน setdiff()

> setdiff(names(data2),names(data1))
[1] "a4" "a5" "a6"

 

จากฟังก์ชัน setdiff() ข้างต้นทำใหเราทราบว่าเราต้องสร้างตัวแปร a9 ให้กับแฟ้มข้อมูลที่ ๒ และเราต้องสร้างตัวแปร a4 a5 และตัวแปร a6 ให้กับแฟ้มข้อมูลที่ ๑

 

ตัวแปรที่เราสร้างขึ้นทั้งหมดนี้จะบรรจุ (เก็บ) ด้วยค่า NA หรือ missing value

 

วิธีการแรกที่จะจัดการคือวิธีการ "ลูกอึด" หรือวิธีการใช้ลูกฮึก ลูกอึด ใช้บรรทัดคำสั่งสร้างตัวแปรทีละตัวแปรที่ต่างกันให้กับแฟ้มข้อมูลทั้งสอง นั่นคือ

 

บรรทัดคำสั่งสร้างตัวแปรที่ไม่มีในแฟ้มข้อมูลที่ ๑ ที่มีเฉพาะแฟ้มข้อมูลที่ ๒ ให้กับแฟ้มข้อมูลที่ ๑

> data1$a4 <- NA
> data1$a5 <- NA
> data1$a6 <- NA

 

และใช้บรรทัดคำสั่งสำหรับสร้างตัวแปรที่มีเฉพาะในแฟ้มข้อมูลที่ ๑ ให้กับแฟ้มข้อมูลที่ ๒

> data2$a9 <- NA

 

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

 

บรรทัดคำสั่งที่ใช้สร้างตัวแปรที่มีเฉพาะในแฟ้มข้อมูลที่ ๒ ให้กับแฟ้มข้อมูลที่ ๑


> data1[,c(as.character(setdiff(names(data2),names(data1))))] <- NA

 

บรรทัดคำสั่งที่ใช้สร้างตัวแปรที่มีเฉพาะในแฟ้มข้อมูลที่ ๑ ให้กับแฟ้มข้อมูลที่ ๒

 

> data2[,c(as.character(setdiff(names(data1),names(data2))))] <- NA

 

ผลลัพธ์ที่ได้เป็น

> data1
   id age sex a1 a2 a3 a9 a4 a5 a6
1   1  25   1  1  1  1  2 NA NA NA
2   2  24   1  1  3  1  2 NA NA NA
3   3  32   2  4  2  1  1 NA NA NA
4   4  26   1  1  4  2  2 NA NA NA
5   5  41   2  2  2  2  1 NA NA NA
6   6  45   1  3  1  1  1 NA NA NA
7   7  24   2  2  3  1  2 NA NA NA
8   8  73   2  2  4  2  2 NA NA NA
9   9  35   1  4  5  1  1 NA NA NA
10 10  22   2  4  2  2  1 NA NA NA


> data2
   id age sex a1 a2 a3 a4 a5 a6 a9
1  21  40   1  4  3  2  2  1  2 NA
2  22  32   2  2  2  1  2  1  2 NA
3  23  25   2  4  3  1  2  2  1 NA
4  24  28   2  1  3  2  1  1  1 NA
5  25  31   1  3  4  2  1  1  2 NA
6  26  44   1  4  2  1  2  2  1 NA
7  27  28   2  2  2  1  2  2  2 NA
8  28  32   1  3  3  1  1  1  1 NA
9  29  45   2  3  1  2  1  1  1 NA
10 30  66   2  4  1  2  1  1  1 NA

 

เมื่อตัวแปรมีจำนวนและชื่อเหมือนกันแล้วเราสามารถใช้ฟังก์ชัน rbind() รวมข้อมูลของทั้งสองแฟ้มข้อมูลเข้าด้วยกันได้แล้ว

> data12 <- rbind(data1, data2)
> data12
   id age sex a1 a2 a3 a9 a4 a5 a6
1   1  25   1  1  1  1  2 NA NA NA
2   2  24   1  1  3  1  2 NA NA NA
3   3  32   2  4  2  1  1 NA NA NA
4   4  26   1  1  4  2  2 NA NA NA
5   5  41   2  2  2  2  1 NA NA NA
6   6  45   1  3  1  1  1 NA NA NA
7   7  24   2  2  3  1  2 NA NA NA
8   8  73   2  2  4  2  2 NA NA NA
9   9  35   1  4  5  1  1 NA NA NA
10 10  22   2  4  2  2  1 NA NA NA
11 21  40   1  4  3  2 NA  2  1  2
12 22  32   2  2  2  1 NA  2  1  2
13 23  25   2  4  3  1 NA  2  2  1
14 24  28   2  1  3  2 NA  1  1  1
15 25  31   1  3  4  2 NA  1  1  2
16 26  44   1  4  2  1 NA  2  2  1
17 27  28   2  2  2  1 NA  2  2  2
18 28  32   1  3  3  1 NA  1  1  1
19 29  45   2  3  1  2 NA  1  1  1
20 30  66   2  4  1  2 NA  1  1  1

 

อิอิอิ

 

เราเอง

 

เพลง: อำนาจใบแดง
ศิลปิน: มนต์รัก ขวัญโพธิ์ไทย

 

เพลงนี้ผมมี version ที่ขับร้องโดย ศรเพชร ศรสุพรรณ ระหว่างโทนเสียงของมนต์รัก กับศรเพชรนั้น ถ้าฟังเผิน ก็จะพบว่า ละม้ายคล้ายกันยิ่ง โดยเฉพาะเมื่อฟังเพลงนี้ โทนเสียงของศรเพชรนั้นจะบี้ บีบเล็ก บวกกับลูกคอที่เป็นเอกลักษณ์ของศรเพชร

 

 

 

 

 

 

หมวดหมู่บันทึก: เรื่องทั่วไป
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 20 กุมภาพันธ์ 2558 17:10 แก้ไข: 28 เมษายน 2563 17:12 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 Monly, Ico24 anni, และ 5 คนอื่น.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

เรื่องหยุดตรุษจีน ก็จริงครับน้าฯ

 

หยุดวันไหว้ก่อน 1 วัน แล้วได้หยุดตามประกาศอีก 1 วัน บางคนขอลาแถมไปอีก 1 วัน จะได้เดินทางไปไหนกับครอบครัวได้ไกลๆ

 

เอิ้ก เอิ้ก

 

"ใจสั่งมา"

ส่วนว่าตัวเรา ลาหนึ่งวัน

วันที่เขาให้หยุดเราไม่หยุด

แต่เราได้แผลมาแทน ฮิ

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