วิธีการคำนวณค่ามัธยฐานของแถวใน r


คุณสามารถใช้วิธีการต่อไปนี้เพื่อคำนวณค่ามัธยฐานของแถวใน R:

วิธีที่ 1: คำนวณค่ามัธยฐานของแถวโดยใช้ฐาน R

 df$row_median = apply(df, 1, median, na. rm = TRUE )

วิธีที่ 2: คำนวณค่ามัธยฐานของแถวโดยใช้ dplyr

 library (dplyr) 

df %>%
  rowwise() %>%
  mutate(row_median = median(c_across(where(is. numeric )), na. rm = TRUE ))

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติ

ตัวอย่างที่ 1: คำนวณค่ามัธยฐานของแถวโดยใช้ฐาน R

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ที่แสดงคะแนนที่ทำได้โดยผู้เล่นบาสเกตบอลที่แตกต่างกันระหว่างสามเกมที่แตกต่างกัน:

 #create data frame
df <- data. frame (game1=c(10, 12, 14, 15, 16, 18, 19),
                 game2=c(14, 19, 13, 8, 15, 15, 17),
                 game3=c(9, NA, 15, 25, 26, 30, 19))

#view data frame
df

  game1 game2 game3
1 10 14 9
2 12 19 NA
3 14 13 15
4 15 8 25
5 16 15 26
6 18 15 30
7 19 17 19

เราสามารถใช้ฟังก์ชัน R base Apply() เพื่อสร้างคอลัมน์ใหม่ที่แสดงค่ามัธยฐานของแต่ละแถว:

 #calculate median of each row
df$row_median = apply(df, 1, median, na. rm = TRUE )

#view updated data frame
df

  game1 game2 game3 row_median
1 10 14 9 10.0
2 12 19 NA 15.5
3 14 13 15 14.0
4 15 8 25 15.0
5 16 15 26 16.0
6 18 15 30 18.0
7 19 17 19 19.0

คอลัมน์ใหม่ที่เรียกว่า row_median มีค่ามัธยฐานของแต่ละแถวในกรอบข้อมูล

ตัวอย่างที่ 2: คำนวณค่ามัธยฐานของแถวโดยใช้ dplyr

สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ที่แสดงคะแนนที่ทำได้โดยผู้เล่นบาสเกตบอลที่แตกต่างกันระหว่างสามเกมที่แตกต่างกัน:

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D', 'E', 'F', 'G'),
                 game1=c(10, 12, 14, 15, 16, 18, 19),
                 game2=c(14, 19, 13, 8, 15, 15, 17),
                 game3=c(9, NA, 15, 25, 26, 30, 19))

#view data frame
df

  player game1 game2 game3
1 A 10 14 9
2 B 12 19 NA
3 C 14 13 15
4 D 15 8 25
5 E 16 15 26
6 F 18 15 30
7 G 19 17 19

เราสามารถใช้ฟังก์ชัน mutate() จากแพ็คเกจ dplyr เพื่อสร้างคอลัมน์ใหม่ที่แสดงค่ามัธยฐานของแต่ละแถวสำหรับคอลัมน์ตัวเลขเท่านั้น:

 library (dplyr)

#calculate median of rows for numeric columns only
df %>%
  rowwise() %>%
  mutate(row_median = median(c_across(where(is. numeric )), na. rm = TRUE ))

# A tibble: 7 x 5
#Rowwise: 
  player game1 game2 game3 row_median
            
1 A 10 14 9 10  
2 B 12 19 NA 15.5
3 C 14 13 15 14  
4 D 15 8 25 15  
5 E 16 15 26 16  
6 F 18 15 30 18  
7 G 19 17 19 19

คอลัมน์ใหม่ที่เรียกว่า row_median มีค่ามัธยฐานของแต่ละแถวในกรอบข้อมูลสำหรับคอลัมน์ตัวเลขเท่านั้น

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

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

วิธีแทนที่ NA ด้วยค่ามัธยฐานใน R
วิธีการคำนวณค่าเฉลี่ยที่ถูกตัดแต่งใน R
วิธีการคำนวณค่าเฉลี่ยถ่วงน้ำหนักใน R

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

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