วิธีใช้ฟังก์ชันกับแต่ละแถวโดยใช้ dplyr


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อใช้ฟังก์ชันกับแต่ละแถวของกรอบข้อมูลใน R โดยใช้ฟังก์ชัน dplyr:

 df %>%
  rowwise() %>% 
  mutate(mean_value = mean(c(col1, col2, col3), na. rm = TRUE ))

ตัวอย่างนี้จะคำนวณค่าเฉลี่ยของ col1 , col2 และ col3 สำหรับแต่ละแถวในกรอบข้อมูล แต่คุณสามารถแทนที่ฟังก์ชัน Mean() ด้วยฟังก์ชันใดๆ ที่คุณต้องการคำนวณเมตริกอื่นได้

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับคะแนนที่ผู้เล่นบาสเก็ตบอลแต่ละคนทำคะแนนในเกมต่างๆ:

 #create data frame
df <- data. frame (game1=c(22, 25, 29, 13, 22, 30),
                 game2=c(12, 10, 6, 6, 8, 11),
                 game3=c(NA, 15, 15, 18, 22, 13))

#view data frame
df

  game1 game2 game3
1 22 12 NA
2 25 10 15
3 29 6 15
4 13 6 18
5 22 8 22
6 30 11 13

ตัวอย่างที่ 1: ค่าเฉลี่ยของคอลัมน์เฉพาะในแต่ละแถว

รหัสต่อไปนี้แสดงวิธีการคำนวณค่าเฉลี่ยของคอลัมน์ game1 และ game3 สำหรับแต่ละแถวในกรอบข้อมูล:

 library (dplyr)

#calculate mean of game1 and game3
df %>%
  rowwise() %>% 
  mutate(mean_points = mean(c(game1, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 mean_points
           
1 22 12 NA 22  
2 25 10 15 20  
3 29 6 15 22  
4 13 6 18 15.5
5 22 8 22 22  
6 30 11 13 21.5

จากผลลัพธ์เราจะเห็นได้ว่า:

  • ค่าเฉลี่ยของเกม 1 และเกม 3 ในแถวแรกคือ 22
  • มูลค่าเฉลี่ยของเกม 1 และเกม 3 ในแถวที่สองคือ 20
  • มูลค่าเฉลี่ยของเกม 1 และเกม 3 ในแถวที่สามคือ 22

และอื่นๆ

ตัวอย่างที่ 2: จำนวนคอลัมน์เฉพาะสูงสุดในแต่ละแถว

รหัสต่อไปนี้แสดงวิธีการคำนวณค่าสูงสุดของคอลัมน์ game2 และ game3 สำหรับแต่ละแถวในกรอบข้อมูล:

 library (dplyr)

#calculate max of game2 and game3
df %>%
  rowwise() %>% 
  mutate(max_points = max(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 max_points
          
1 22 12 NA 12
2 25 10 15 15
3 29 6 15 15
4 13 6 18 18
5 22 8 22 22
6 30 11 13 13

จากผลลัพธ์เราจะเห็นได้ว่า:

  • ค่าสูงสุดของ game2 และ game3 ในแถวแรกคือ 12
  • ค่าสูงสุดของ game2 และ game3 ในแถวที่สองคือ 15
  • ค่าสูงสุดของ game2 และ game3 ในแถวที่สามคือ 15

และอื่นๆ

ตัวอย่างที่ 3: ค่าเบี่ยงเบนมาตรฐานของคอลัมน์เฉพาะในแต่ละแถว

รหัสต่อไปนี้แสดงวิธีคำนวณค่าเบี่ยงเบนมาตรฐานของค่าในคอลัมน์ game2 และ game3 สำหรับแต่ละแถวใน data frame:

 library (dplyr)

#calculate standard deviation of game2 and game3
df %>%
  rowwise() %>% 
  mutate(sd_points = sd(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 sd_points
         
1 22 12 NA NA   
2 25 10 15 3.54
3 29 6 15 6.36
4 13 6 18 8.49
5 22 8 22 9.90
6 30 11 13 1.41

จากผลลัพธ์เราจะเห็นได้ว่า:

  • ค่าเบี่ยงเบนมาตรฐานของเกม 2 และเกม 3 ในแถวแรกคือ NA (เนื่องจากค่าเบี่ยงเบนมาตรฐานไม่สามารถคำนวณได้จากค่าเดียว)
  • ค่าเบี่ยงเบนมาตรฐานของเกม 2 และเกม 3 ในแถวที่สองคือ 3.54
  • ค่าเบี่ยงเบนมาตรฐานของเกมที่ 2 และเกมที่ 3 ในแถวแรก 6.36

และอื่นๆ

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มของฟังก์ชัน rowwise() ได้ใน dplyr ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้อธิบายวิธีดำเนินการงานทั่วไปอื่น ๆ โดยใช้ dplyr:

วิธีนับค่าที่แตกต่างโดยใช้ dplyr
วิธีรวมหลายคอลัมน์โดยใช้ dplyr
วิธีแทนที่ค่าหลายค่าใน data frame โดยใช้ dplyr

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *