วิธีแทนที่ค่า inf ด้วย na ใน r


คุณสามารถใช้วิธีการต่อไปนี้เพื่อแทนที่ค่า Inf ด้วยค่า NA ใน R:

วิธีที่ 1: แทนที่ Inf ด้วย NA ใน Vector

 x[is. infinite (x)] <- NA

วิธีที่ 2: แทนที่ Inf ด้วย NA ในคอลัมน์ทั้งหมดของกรอบข้อมูล

 df[sapply(df, is. infinite )] <- NA

วิธีที่ 3: แทนที่ Inf ด้วย NA ในคอลัมน์เฉพาะของกรอบข้อมูล

 df[c(' col1 ', ' col2 ')][sapply(df[c(' col1 ', ' col2 ')], is. infinite )] <- NA

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

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 points=c(10, 10, 8, 14, 15, 15, 17, 17))

#view data frame
df

  team position points
1 AG 10
2 AG 10
3AF 8
4 AF 14
5 BG 15
6 BG 15
7 BF 17
8 BF 17

ตัวอย่างที่ 1: แทนที่ Inf ด้วย NA ในเวกเตอร์

รหัสต่อไปนี้แสดงวิธีแทนที่ค่า Inf ทั้งหมดด้วยค่า NA ในเวกเตอร์:

 #create vector with some Inf values
x <- c(4, 12, Lower, 8, Lower, 9, 12, 3, 22, Lower)

#replace Inf values with NA
x[is. infinite (x)] <- NA

#view updated vector
x

 [1] 4 12 NA 8 NA 9 12 3 22 NA

โปรดทราบว่าค่า Inf ทั้งหมดจากเวกเตอร์ดั้งเดิมถูกแทนที่ด้วยค่า NA

ตัวอย่างที่ 2: แทนที่ Inf ด้วย NA ในคอลัมน์ทั้งหมดของกรอบข้อมูล

รหัสต่อไปนี้แสดงวิธีแทนที่ค่า Inf ด้วยค่า NA ในแต่ละคอลัมน์ของกรอบข้อมูล:

 #create data frame
df <- data. frame (x=c(4, 5, 5, 4, Inf, 8, Inf),
                 y=c(10, Lower, Lower, 3, 5, 5, 8),
                 z=c(Inf, 5, 5, 6, 3, 12, 14))

#view data frame
df

    X Y Z
1 4 10 Lower
2 5 Lower 5
3 5 Lower 5
4 4 3 6
5 Lower 5 3
6 8 5 12
7 Lower 8 14

#replace Inf values with NA values in all columns
df[sapply(df, is. infinite )] <- NA

#view updated data frame
df

   X Y Z
1 4 10 NA
2 5 NA 5
3 5 NA 5
4 4 3 6
5 NA 5 3
6 8 5 12
7 NA 8 14

โปรดทราบว่าค่า Inf ในแต่ละคอลัมน์ของกรอบข้อมูลถูกแทนที่ด้วยค่า NA

ตัวอย่างที่ 3: แทนที่ Inf ด้วย NA ในคอลัมน์เฉพาะของกรอบข้อมูล

รหัสต่อไปนี้แสดงวิธีแทนที่ค่า Inf ด้วยค่า NA ในคอลัมน์เฉพาะของกรอบข้อมูล:

 #create data frame
df <- data. frame (x=c(4, 5, 5, 4, Inf, 8, Inf),
                 y=c(10, Lower, Lower, 3, 5, 5, 8),
                 z=c(Inf, 5, 5, 6, 3, 12, 14))

#view data frame
df

    X Y Z
1 4 10 Lower
2 5 Lower 5
3 5 Lower 5
4 4 3 6
5 Lower 5 3
6 8 5 12
7 Lower 8 14

#replace Inf values with NA values in columns 'x' and 'z' only
df[c(' x ', ' z ')][sapply(df[c(' x ', ' z ')], is. infinite )] <- NA

#view updated data frame
df

   X Y Z
1 4 10 NA
2 5 Lower 5
3 5 Lower 5
4 4 3 6
5 NA 5 3
6 8 5 12
7 NA 8 14

โปรดทราบว่าค่า Inf ในคอลัมน์ “x” และ “y” ถูกแทนที่ด้วยค่า NA

อย่างไรก็ตาม ค่า Inf ในคอลัมน์ “y” ยังคงไม่เปลี่ยนแปลง

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

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

วิธีใช้ is.na ใน R
วิธีใช้ na.omit ใน R
วิธีแทนที่ช่องว่างด้วย NA ใน R

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

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