For-Loop ใน R DataFrame

For Loop Ni R Dataframe



for-loop เป็นโครงสร้างการควบคุมที่ช่วยให้เราสามารถทำซ้ำชุดคำสั่งในจำนวนครั้งที่กำหนด เป็นวิธีที่ใช้กันทั่วไปสำหรับการวนซ้ำใน R โดยเฉพาะอย่างยิ่งเมื่อเราจำเป็นต้องดำเนินการแบบเดียวกันในบางองค์ประกอบหรือวนซ้ำในโครงสร้างข้อมูล เช่น โครงสร้างข้อมูลใน DataFrame แถวและคอลัมน์ประกอบเป็น DataFrames ใน R โดยที่แต่ละแถวแสดงถึงการสังเกตเดียว และแต่ละคอลัมน์แสดงถึงตัวแปรหรือลักษณะของการสังเกตนั้น

สำหรับบทความนี้ เราใช้ for-loop เพื่อวนซ้ำกับ DataFrame ในแนวทางต่างๆ โปรดทราบว่าการวนซ้ำของ for-loop ในแถวและคอลัมน์สามารถคำนวณได้สูงสำหรับ DataFrames ขนาดใหญ่







ตัวอย่างที่ 1: การใช้ For-Loop บนแถว DataFrame ใน R

สามารถใช้ for-loop ใน R เพื่อวนซ้ำแถวของ DataFrame ภายใน for-loop เราสามารถใช้ดัชนีแถวเพื่อเข้าถึงแต่ละแถวของ DataFrame ลองพิจารณาโค้ด R ต่อไปนี้ซึ่งเป็นการสาธิต for-loop เพื่อวนซ้ำแถวของ DataFrame ที่ระบุ



ข้อมูล = data.frame(c1 = c(1:5),

c2 = ค(6:10),

c3 = ค(11:15))

สำหรับ (ฉันใน 1:nrow (ข้อมูล)) {

แถว <- data[i, ]

พิมพ์(แถว)

}

ในที่นี้ ขั้นแรกให้กำหนดฟังก์ชัน data.frame() ภายใน 'ข้อมูล' ฟังก์ชัน data.frame() ที่นี่มีสามคอลัมน์ แต่ละคอลัมน์ถูกกำหนดด้วยลำดับของตัวเลขตั้งแต่ 1 ถึง 5, 6 ถึง 10 และ 11 ถึง 15 ตามลำดับ หลังจากนั้น ฟังก์ชัน for-loop จะถูกปรับใช้ซึ่งจะวนซ้ำแถวของ 'ข้อมูล' ของ DataFrame โดยใช้ฟังก์ชัน nrow() เพื่อรับจำนวนแถวทั้งหมด ตัวแปรลูป “i” รับค่าเป็นจำนวนแถวทั้งหมดใน “ข้อมูล”



จากนั้น เราแยกแถวที่ i-th ของ DataFrame “ข้อมูล” โดยใช้เครื่องหมายวงเล็บเหลี่ยม “[ ]” แถวที่แยกออกมาจะถูกเก็บไว้ในตัวแปร 'แถว' ซึ่งจะถูกพิมพ์โดยฟังก์ชัน print()





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



ตัวอย่างที่ 2: การใช้ For-Loop บนคอลัมน์ DataFrame

ในทำนองเดียวกัน เราสามารถใช้ for-loop ใน R เพื่อวนซ้ำคอลัมน์ของ dataframe ที่ระบุ เราสามารถใช้โค้ดก่อนหน้าวนซ้ำคอลัมน์ได้ แต่เราต้องใช้ฟังก์ชัน ncol() ใน for-loop ในทางกลับกัน เรามีวิธีที่ง่ายที่สุดในการวนซ้ำคอลัมน์ของ DataFrame โดยใช้ for-loop พิจารณารหัส R ต่อไปนี้สำหรับสิ่งนี้:

df = data.frame(col1 = c(10, 20, 30, 40, 50),

col2 = ค(11, 21, 31, 41, 51),

col3 = ค(12, 22, 32, 42, 52))

สำหรับ (col ใน colnames (df)) {

คอลัมน์ <- df[[col]]

พิมพ์ (คอลัมน์)

}

ในขั้นแรก เราสร้างตัวแปร df โดยที่ data.frame() ถูกใช้กับการแทรกคอลัมน์ DataFrame “df” มีสามคอลัมน์ที่มีค่าตัวเลข ต่อไป เราใช้ for-loop เพื่อวนซ้ำชื่อคอลัมน์ของ DataFrame “data” โดยใช้ฟังก์ชัน colnames() ในการวนซ้ำแต่ละครั้ง ตัวแปรลูป 'col' จะใช้ชื่อของคอลัมน์ปัจจุบัน คอลัมน์ที่แยกแล้วจะถูกเก็บไว้ในตัวแปรใหม่ซึ่งเรียกว่า 'คอลัมน์'

ดังนั้น ข้อมูลของตัวแปร 'คอลัมน์' จึงพิมพ์เอาต์พุตบนคอนโซลต่อไปนี้:

ตัวอย่างที่ 3: การใช้ For-Loop บน DataFrame ทั้งหมด

ในตัวอย่างก่อนหน้านี้ เราวนลูปเหนือคอลัมน์และแถวโดยใช้ for-loop ตามลำดับ ตอนนี้เราใช้การวนซ้ำที่ซ้อนกันเพื่อวนซ้ำทั้งแถวและคอลัมน์ของ DataFrame พร้อมกัน รหัสของ R มีให้ในต่อไปนี้ซึ่งใช้ for-loop ที่ซ้อนกันเหนือคอลัมน์และแถว:

พนักงาน <- data.frame(id=1:4,

name=c('คิม', 'จอห์น', 'เอียน', 'มาร์ค'),

location=c('ออสเตรเลีย' 'อเมริกา' 'แคนาดา' 'จอร์แดน'),

เงินเดือน=c(2000, 1800, 1500, 1,000))

สำหรับ (แถวใน 1:nrow(พนักงาน)) {

สำหรับ (col ใน 1:ncol(พนักงาน)) {

พิมพ์ (วาง ('ดัชนีแถว', แถว, 'ชื่อคอลัมน์', col, 'ค่าเซลล์', พนักงาน [แถว, col]))

}

}

ที่นี่ เราประกาศตัวแปร “พนักงาน” โดยเรียกใช้ data.frame() เพื่อตั้งค่าคอลัมน์ ค่าในแต่ละคอลัมน์ระบุโดยใช้เวกเตอร์ จากนั้นสำหรับแถวและคอลัมน์ของ DataFrame “พนักงาน” เราใช้ for-loop ที่ซ้อนกันสองวงเพื่อวนซ้ำข้อมูล การวนซ้ำรอบนอกจะวนซ้ำแถวของ DataFrame ที่ระบุโดยใช้ “1:nrow(employees)” สำหรับแต่ละแถว จะใช้ “1:ncol(พนักงาน)” ในวงในเพื่อวนซ้ำๆ ในคอลัมน์ของ DataFrame

หลังจากนั้น เรามีฟังก์ชัน print() ภายในลูปที่ซ้อนกัน ซึ่งใช้ฟังก์ชัน paste() เพื่อเชื่อมดัชนีแถว ดัชนีคอลัมน์ และค่าเซลล์ให้เป็นสตริงเดียว นิพจน์พนักงาน [row, col] ที่นี่รับค่าในเซลล์ปัจจุบันโดยที่แถวและคอลัมน์คือดัชนีแถวและคอลัมน์ที่มีอยู่ตามลำดับ

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

ตัวอย่างที่ 4: For-Loop Alternative Method ใน R

for loop ล้าสมัยในภาษา R แล้ว อย่างไรก็ตาม มันมีวิธีทางเลือกบางอย่างที่ทำงานเหมือนกับ for-loop และเร็วกว่า for-loop เมธอดนี้มาจากฟังก์ชัน “apply family” ซึ่งเรียกใช้ for-loop ในพื้นหลังเพื่อวนซ้ำผ่าน DataFrames ลองพิจารณาโค้ด R ต่อไปนี้ซึ่งใช้ฟังก์ชัน sapply() เพื่อวนซ้ำ DataFrame

dfX <- data.frame(var1=c(1:5),

var2=c(6:10),

var3=c(11:15),

var4=ค(16:20))

เดเอฟเอ็กซ์

จัดหา (dfX, ผลรวม)

ในขั้นแรก เราสร้าง DataFrame “dfX” โดยการเรียกฟังก์ชัน data.frame() ที่มีสองคอลัมน์ แต่ละคอลัมน์มีค่าตัวเลข จากนั้นเราจะพิมพ์ DataFrame “dfX” ต้นฉบับไปยังคอนโซล ในขั้นตอนถัดไป เราใช้ฟังก์ชัน sapply() เพื่อวนซ้ำ DataFrame ที่ให้มาและรับผลรวมของแต่ละคอลัมน์ ฟังก์ชัน sapply() รับอาร์กิวเมนต์ 'x' และ 'FUN' โดยทั่วไป ในกรณีนี้ X คือ DataFrame “dfX” และ “FUN” คือฟังก์ชัน sum() ที่นำไปใช้กับแต่ละคอลัมน์ของ DataFrame

ผลลัพธ์ของการวนซ้ำซึ่งทำได้ผ่านฟังก์ชัน sapply() ทำได้ในหน้าจอต่อไปนี้ ผลลัพธ์ของการดำเนินการผลรวมของ DataFrame จะแสดงสำหรับแต่ละคอลัมน์ นอกจากนี้ เรายังสามารถใช้ฟังก์ชันอื่นๆ ของ “apply family” สำหรับการดำเนินการ for-loop ใน R:

บทสรุป

เราทำงานร่วมกับ for-loop เพื่อวนซ้ำแถวหรือคอลัมน์ของ DataFrame เพื่อดำเนินการบางอย่าง for-loop ใช้ทีละรายการเพื่อวนซ้ำในคอลัมน์และแถว นอกจากนี้ เราใช้สิ่งนี้เพื่อวนซ้ำทั้งคอลัมน์และแถวของดาต้าเฟรมพร้อมกัน ส่วนใหญ่แล้ว การใช้ฟังก์ชันเพื่อให้ได้ผลลัพธ์ที่ต้องการจะมีประสิทธิภาพมากกว่า ตัวอย่างของฟังก์ชันนำไปใช้มีให้ในตัวอย่างสุดท้ายสำหรับการดำเนินการวนรอบ