วิธีใช้ฟังก์ชันกับแต่ละแถวโดยใช้ 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