วิธีใส่ค่าที่หายไปใน r (พร้อมตัวอย่าง)
บ่อยครั้งคุณอาจต้องการแทนที่ค่าที่หายไปในคอลัมน์ของกรอบข้อมูลใน R ด้วยค่าเฉลี่ยหรือค่ามัธยฐานของคอลัมน์นั้น
หากต้องการแทนที่ค่าที่หายไปในคอลัมน์เดียว คุณสามารถใช้ไวยากรณ์ต่อไปนี้:
df$col[ is.na (df$col)] <- mean(df$col, na.rm = TRUE )
และหากต้องการแทนที่ค่าที่หายไปในหลายคอลัมน์ คุณสามารถใช้ไวยากรณ์ต่อไปนี้:
for(i in 1: ncol (df)) { df[ , i][ is.na (df[ , i])] <- mean(df[ , i], na.rm = TRUE ) }
บทช่วยสอนนี้จะอธิบายวิธีใช้ฟังก์ชันเหล่านี้ในทางปฏิบัติอย่างชัดเจน
ตัวอย่างที่ 1: แทนที่ค่าที่หายไปด้วยค่าเฉลี่ยคอลัมน์
รหัสต่อไปนี้แสดงวิธีแทนที่ค่าที่หายไปในคอลัมน์แรกของกรอบข้อมูลด้วยค่าเฉลี่ยของคอลัมน์แรก:
#create data frame df <- data.frame(var1=c(1, NA, NA, 4, 5), var2=c(7, 7, 8, 3, 2), var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #replace missing values in first column with mean of first column df$var1[ is.na (df$var1)] <- mean(df$var1, na.rm = TRUE ) #view data frame with missing values replaced df var1 var2 var3 var4 1 1.000000 7 3 1 2 3.333333 7 3 1 3 3.333333 8 6 2 4 4.000000 3 6 8 5 5.000000 2 8 9
ค่าเฉลี่ยในคอลัมน์แรกคือ 3.333 ดังนั้นค่าที่หายไปในคอลัมน์แรกจึงถูกแทนที่ด้วย 3.333
รหัสต่อไปนี้แสดงวิธีแทนที่ค่าที่หายไปในแต่ละคอลัมน์ด้วยค่าเฉลี่ยของคอลัมน์ของตัวเอง:
#create data frame df <- data.frame(var1=c(1, NA, NA, 4, 5), var2=c(7, 7, 8, NA, 2), var3=c(NA, 3, 6, NA, 8), var4=c(1, 1, 2, 8, 9)) #replace missing values in each column with column means for(i in 1: ncol (df)) { df[ , i][ is.na (df[ , i])] <- mean(df[ , i], na.rm = TRUE ) } #view data frame with missing values replaced df var1 var2 var3 var4 1 1.000000 7 5.666667 1 2 3.333333 7 3.000000 1 3 3.333333 8 6.000000 2 4 4.000000 6 5.666667 8 5 5.000000 2 8.000000 9
ตัวอย่างที่ 2: แทนที่ค่าที่หายไปด้วยค่ามัธยฐานของคอลัมน์
รหัสต่อไปนี้แสดงวิธีแทนที่ค่าที่หายไปในคอลัมน์แรกของกรอบข้อมูลด้วยค่ามัธยฐานของคอลัมน์แรก:
#create data frame df <- data.frame(var1=c(1, NA, NA, 4, 5), var2=c(7, 7, 8, NA, 2), var3=c(NA, 3, 6, NA, 8), var4=c(1, 1, 2, 8, 9)) #replace missing values in first column with median of first column df$var1[ is.na (df$var1)] <- median(df$var1, na.rm = TRUE ) #view data frame with missing values replaced df var1 var2 var3 var4 1 1 7 NA 1 2 4 7 3 1 3 4 8 6 2 4 4 NA NA 8 5 5 2 8 9
ค่ามัธยฐานในคอลัมน์แรกคือ 4 ดังนั้นค่าที่หายไปในคอลัมน์แรกจึงถูกแทนที่ด้วย 4
รหัสต่อไปนี้แสดงวิธีแทนที่ค่าที่หายไปในแต่ละคอลัมน์ด้วยค่ามัธยฐานของคอลัมน์ของตัวเอง:
#create data frame df <- data.frame(var1=c(1, NA, NA, 4, 5), var2=c(7, 7, 8, NA, 2), var3=c(NA, 3, 6, NA, 8), var4=c(1, 1, 2, 8, 9)) #replace missing values in each column with column medians for(i in 1: ncol (df)) { df[ , i][ is.na (df[ , i])] <- median(df[ , i], na.rm = TRUE ) } #view data frame with missing values replaced df var1 var2 var3 var4 1 1 7 6 1 2 4 7 3 1 3 4 8 6 2 4 4 7 6 8 5 5 2 8 9
แหล่งข้อมูลเพิ่มเติม
วิธีวนซ้ำชื่อคอลัมน์ใน R
วิธีการคำนวณค่าเฉลี่ยของหลายคอลัมน์ใน R
วิธีรวมคอลัมน์เฉพาะใน R