วิธีการแปลง DataFrame ใน R

Withi Kar Paelng Dataframe Ni R



การย้ายชุดข้อมูลเป็นการดำเนินการอย่างหนึ่งที่จะปฏิรูปข้อมูลให้ตรงตามข้อกำหนดเฉพาะของการวิเคราะห์ การย้ายชุดข้อมูลเกี่ยวข้องกับการกลับแถวและคอลัมน์ของชุดข้อมูล ส่งผลให้ชุดข้อมูลใหม่มีการสลับคอลัมน์และแถว R มีฟังก์ชันบางอย่างในการเปลี่ยนชุดข้อมูล ในบทความนี้ เราจะกล่าวถึงวิธีการเปลี่ยนตำแหน่งต่างๆ สำหรับ DataFrames ใน R

ตัวอย่างที่ 1: ทรานสโพส DataFrame โดยใช้ฟังก์ชัน T() ใน R

ฟังก์ชัน t() เป็นฟังก์ชันในตัวของ R ซึ่งใช้ในการย้าย DataFrame อย่างไรก็ตาม จะแปลง DataFrame เป็นเมทริกซ์ ดังนั้นคอลัมน์ใดๆ ที่ไม่ใช่ตัวเลขจะถูกแปลงเป็นสตริงอักขระ พิจารณาสคริปต์ R ต่อไปนี้เพื่อเปลี่ยน DataFrame:







MyData = data.frame(c1 = c(1, 2, 3, 4, 5),

c2 = ค(6, 7, 8, 9, 10),
c3 = ค(11, 12, 13, 14, 15))

row.names(MyData) = c('r1','r2','r3','r4','r5')

เสื้อ (ข้อมูลของฉัน)

ที่นี่ เราประกาศเวกเตอร์ MyData และกำหนด data.frame() ให้กับมัน เราแทรกข้อมูลตัวอย่างซึ่งประกอบด้วยสามคอลัมน์ที่มีค่าภายในฟังก์ชัน data.frame() หลังจากนั้น เราใช้ฟังก์ชัน “row.names()” และตั้งชื่อแถวสำหรับค่าของ DataFrame “MyData” สุดท้าย เราย้าย DataFrame “MyData” โดยใช้ฟังก์ชัน t()



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







ตัวอย่างที่ 2: ย้าย DataFrame โดยใช้ฟังก์ชัน Transpose() ใน R

ฟังก์ชัน transpose() จากแพ็คเกจ 'data.table' ยังสามารถนำมาใช้เพื่อแปลง DataFrame และส่งคืน DataFrame ดังนั้น เราต้องแน่ใจว่าได้ติดตั้ง “data.table” ใน R แล้ว หากไม่พบ เราสามารถติดตั้งได้ด้วยคำสั่งต่อไปนี้:

install.packages('data.table')

ตอนนี้ เราสามารถนำเข้าแพ็คเกจ “data.table” เพื่อเข้าถึงฟังก์ชัน transpose() ใน R เพื่อแปลง DataFrame ได้อย่างง่ายดาย พิจารณารหัส R ต่อไปนี้ซึ่งมีการเรียกใช้ฟังก์ชัน transpose() เพื่อย้าย DataFrame:



df <- data.frame(A = ค(1:5),

ข = ค(6:10),
ค = ค(11:15))


row.names(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

ดีเอฟ

ที่นี่ เราสร้าง DataFrame “df” ที่มีสามคอลัมน์และห้าแถว โดยแต่ละคอลัมน์มีลำดับของตัวเลขตั้งแต่ 1 ถึง 5, 6 ถึง 10 และ 11 ถึง 15 ตามลำดับ นอกจากนี้ เรากำหนดชื่อแถว DataFrame โดยใช้ฟังก์ชัน row.names() หลังจากนั้นเราก็พิมพ์ DataFrame ต้นฉบับไปที่คอนโซล

DataFrame ดั้งเดิมแสดงบนหน้าจอที่นี่:

ต่อไป เราจะเปลี่ยนตำแหน่ง 'df' DataFrame ดั้งเดิมโดยสลับแถวและคอลัมน์ของ DataFrame

ห้องสมุด (data.table)

df_trans <- ย้าย (df)

ชื่อแถว (df_trans) <- colnames (df)

colnames (df_trans) <- ชื่อแถว (df)

df_trans

สำหรับสิ่งนี้ ก่อนอื่นเราโหลดไลบรารี 'data.table' ซึ่งมีเครื่องมือในการทำงานกับข้อมูลแบบตารางใน R จากนั้นจึงใช้ฟังก์ชัน transpose() จากไลบรารี 'data.table' DataFrame ที่ทรานสโพสที่เป็นผลลัพธ์ถูกกำหนดให้กับตัวแปรใหม่ซึ่งก็คือ “df_t” หลังจากนั้น เรากำหนดชื่อคอลัมน์ของ DataFrame “df” เดิมเป็นชื่อแถวให้กับ DataFrame “df_trans” ที่ทรานสโพสโดยใช้ฟังก์ชัน rownames() จากนั้น ชื่อแถวของ DataFrame “df” ดั้งเดิมจะถูกกำหนดเป็นชื่อคอลัมน์ให้กับ DataFrame “df_trans” ที่ย้ายตำแหน่งโดยใช้ฟังก์ชัน colnames()

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

ตัวอย่างที่ 3: ย้าย DataFrame โดยใช้ฟังก์ชัน Tidyr Library Gather() ใน R

สามารถใช้แพ็คเกจ tidyr ของ R เพื่อย้าย DataFrame วิธีนี้มีประโยชน์เมื่อเราต้องการแปลง DataFrame จากรูปแบบกว้างเป็นรูปแบบยาว แล้วกลับเป็นรูปแบบกว้างโดยสลับแถวและคอลัมน์ มีฟังก์ชันหลายอย่างในการแปลงและจัดระเบียบข้อมูลใหม่ ก่อนหน้านี้เราต้องดาวน์โหลดแพ็คเกจ tidyr โดยเฉพาะโดยใช้คำสั่งต่อไปนี้:

install.packages('tidyr')

ลองพิจารณารหัส R ต่อไปนี้ เราใช้ฟังก์ชันรวบรวม () ของแพ็คเกจนี้เพื่อเปลี่ยน DataFrame แบบกว้างให้ยาวขึ้น:

ห้องสมุด (เป็นระเบียบเรียบร้อย)

n = 10

tidy_df = data.frame(

ID = ค(1:n),
Exam1_Marks = ค(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Exam2_Marks = ค(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Exam3_Marks = ค(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))

เรียบร้อย_df

ที่นี่ DataFrame 'กว้าง' จะถูกแปลงเป็น DataFrame 'ยาว' โดยใช้ tidyr อันดับแรก เราสร้าง DataFrame “tidy_df” ที่มีสามคอลัมน์ แต่ละคอลัมน์มีค่า 10 ค่า

DataFrame แบบยาวจะแสดงในหน้าจอผลลัพธ์ต่อไปนี้:

จากนั้น เราส่ง DataFrame “tidy_df” ไปยังฟังก์ชัน Gather() ด้วยตัวดำเนินการไพพ์ “%>%” ฟังก์ชันรวบรวม () จาก tidyr ใช้เพื่อแปลง 'tidy_df' เป็น DataFrame ขนาดยาว ฟังก์ชันรวบรวม () รับอินพุตด้วยชื่อ 'การสอบ' ซึ่งระบุคอลัมน์ใหม่เพื่อเก็บชื่อตัวแปรที่สร้างขึ้นในการแปลง “Marks” ระบุคอลัมน์ที่รวบรวม “Exam1_Marks” และ “Exam2_Marks” ไว้ด้วยกัน

ยาว <- tidy_df %>%

รวบรวม (การสอบ, เครื่องหมาย,
Exam1_Marks:สอบ2_Marks)


ยาว

ผลลัพธ์จะแสดง DataFrame แบบยาวไปยังคอนโซลซึ่งตอนนี้มีรูปแบบ 'แบบยาว' ที่มีสามคอลัมน์:

ตัวอย่างที่ 4: ย้าย DataFrame โดยใช้ฟังก์ชัน Pivot_Wider() ใน R

ฟังก์ชันขั้นสูงถัดไปที่เราใช้เพื่อย้าย DataFrame คือฟังก์ชัน pivot_wider() pivot_wider() เป็นฟังก์ชันจากแพ็คเกจ tidyr ใน R ซึ่งทำให้เราสามารถแปลง DataFrame ที่ “ยาว” เป็น DataFrame ที่ “กว้าง” ได้ ฟังก์ชันใช้สามอาร์กิวเมนต์หลักซึ่งกล่าวถึงในรหัสต่อไปนี้ของ R:

ห้องสมุด (เป็นระเบียบเรียบร้อย)

df <- data.frame (

รหัส = ค(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
วาล = ค(4, 5, 6, 7, 8, 9)


)

ดีเอฟ

ที่นี่ ก่อนอื่นเราโหลดแพ็คเกจ tidyr โดยใช้ฟังก์ชัน library() จากนั้น เราตั้งค่า DataFrame ตัวอย่างเป็น “df” DataFrame “df” มีสามคอลัมน์ที่มีค่าต่างกันตามลำดับ สามารถดู DataFrame ตัวอย่างได้ในเอาต์พุตต่อไปนี้:

หลังจากนั้น ฟังก์ชัน pivot_wider() จาก tidyr จะใช้ในการแปลง 'df' เป็น 'df_wide'

df_wide <- pivot_wider (df, names_from = var, ค่า_จาก = val)

df_กว้าง

ฟังก์ชัน pivot_wider() รับอาร์กิวเมนต์สามตัวที่นี่ ขั้นแรก ต้องใช้ DataFrame 'df' ในการแปลง จากนั้น อาร์กิวเมนต์ names_from จะตั้งชื่อคอลัมน์ที่จะใช้สำหรับชื่อตัวแปรใหม่ สุดท้าย อาร์กิวเมนต์ value_from ระบุชื่อคอลัมน์ที่จะใช้สำหรับค่าใหม่

เอาต์พุตต่อไปนี้แสดงการย้าย DataFrame แบบยาวไปยัง DataFrame แบบกว้าง:

บทสรุป

เราใช้วิธีต่างๆ ในการสลับตำแหน่ง DataFrame ใน R ตัวอย่างแรกตั้งค่าด้วย t() วิธีการในตัว ตัวอย่างอื่นๆ ทั้งหมดต้องใช้แพ็กเกจในการนำเข้า เพื่อให้เราสามารถใช้ฟังก์ชันของแพ็กเกจเหล่านี้สำหรับการขนย้าย DataFrame อย่างไรก็ตาม วิธีการใช้ที่ดีที่สุดขึ้นอยู่กับสถานการณ์เฉพาะและโครงสร้างข้อมูลที่คุณกำลังทำงานด้วย